![]() |
[MySQL] Relacje, łączenie wg. dwóch pól - Wersja do druku +- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl) +-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www) +--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych) +--- Wątek: [MySQL] Relacje, łączenie wg. dwóch pól (/thread-mysql-relacje-laczenie-wg-dwoch-pol) |
[MySQL] Relacje, łączenie wg. dwóch pól - Pavlosik - 04-02-2012 Witam serdecznie, Zwracam się z zapytaniem/prośbą do Was o pomoc w rozwiązaniu problemu. Otóż posiadam dwie tabele w bazie danych, które muszę połączyć w dość specyficzny sposób. Tabela 1: zawiera listę wszystkich zarejestrowanych użytkowników Tabela 2: zawiera listę plików, które zostały oznaczone przez użytkowników jako niezgodne z regulaminem. Tabela nr 2 zawiera pola: USER_ID -> wpada tu ID użytkownika z Tabeli1, który oznaczył dany plik za niezgodny UPLOADER_ID -> ID użytkownika z Tabeli 1, który dodał plik niezgodny z regulaminem Przybliżony schemat tabel: Kod: TABELA 1 - spis wszystkich użytkowników Kod: TABELA 2 - spis plików nieregulaminowych I pytanie. Jak wyciągnąć z Tabeli1 tylko tych użytkowników, którzy pojawili się w Tabeli2 w polu user_id bądź uploader_id? Musze stworzyć linki do userów na podstawie ich username'a a nie id stąd też trzeba połączyć w jakiś sposób te tabele. Będę bardzo wdzięczny za pomoc ![]() Pozdrawiam RE: [MySQL] Relacje, łączenie wg. dwóch pól - mateo - 04-02-2012 Można na kilka sposobów, pobierasz id z obydwu tabeli i przypisujesz je do osobnych tablic następnie porównujesz i wynikiem jest lista numerów występujących w dwóch tabelach. Rozwiązanie działa ale nie jest najlepsze, dlatego polecam skorzystać z http://dev.mysql.com/doc/refman/5.0/en/join.html RE: [MySQL] Relacje, łączenie wg. dwóch pól - Pavlosik - 04-02-2012 (04-02-2012, 23:21)mateo napisał(a): Można na kilka sposobów, pobierasz id z obydwu tabeli i przypisujesz je do osobnych tablic następnie porównujesz i wynikiem jest lista numerów występujących w dwóch tabelach. Rozwiązanie działa ale nie jest najlepsze, dlatego polecam skorzystać z http://dev.mysql.com/doc/refman/5.0/en/join.html W grę wchodzi tylko i wyłącznie JOIN. Myślałem o takim zapytaniu: Kod: SELECT t1.username FROM tabela1 t1 Chyba działa dobrze, ale jak dodamy do tego DISTINCT i również COUNT do zliczenia ilości userów to zapytanie do bazy potrafi trwać do 1 min (ilość wpisów w tabeli1 ok. 1mln). To zdecydowanie za długo. |