Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Podwójne odwołanie do tej samej tablicy
Forum PHP.pl > Forum > Przedszkole
motorolka24
Cześć. Jak odwołać się podwójnie do tej samej tablicy. Chodzi mi o wyciągnięcie rekordu dla zawiadomienia gdy mamy takie tablice:

user
-----
id
nazwa

zawiadomienie
----------------
zglaszajacy_id
zawiadamiany_id
tekst


zglaszajacy_id i zawiadamiany_id to połączenie z user.id
decha-design
poczytaj o LEFT JOIN ... bardzo łatwo zastosować ...

Tu jest to chyba najjaśniej opisane ... http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php ... tutaj też http://www.w3schools.com/Sql/sql_join.asp
motorolka24
  1. SELECT DISTINCT * FROM zawiadomienie zaw, user a, user b
  2. LEFT OUTER JOIN auto aa ON (a.id = aa.user_id)
  3. LEFT OUTER JOIN auto ab ON (b.id = ab.user_id)
  4. WHERE zaw.zglaszajacy_id = a.id AND zaw.zawiadamiany_id = b.id



co jest źle?

taki mam błąd

1054: Unknown column 'b.id' in 'on clause'
_Martin_
W Kodzie błędu ci pisze:

1054: Unknown column 'b.id' in 'on clause' - 1054 Nieznana kolumna 'b.id'

Czyli nie znajduje takiej kolumny w bazie smile.gif

Podam ci jeszcze jedną wymyślony przykład porównaj z twoim

  1. SELECT
  2. k.*, t.pozycja AS pozycja_gry
  3.  
  4. FROM kluby AS k, tabele AS t
  5. WHERE k.id = '".$id."' AND t.id_klub = k.id AND t.sezon = ".SEASONID."


Porównaj jaki możesz mieć błąd smile.gif
motorolka24
No nie znajduje ae niby czemu. b jest przecież aliasem tablicy user a user jest na pewno
melkorm
Cytat
No nie znajduje ae niby czemu. b jest przecież aliasem tablicy user a user jest na pewno


a dlaczego nie możesz 2 razy odwołać się do tej samej tablicy ? z tego co w innym topicu napsiałeś - ten sam problem - wydaje się że zadziałą ;]
motorolka24
nie mogę chyba bez aliasow 2 razy do tej samej bo potrzebuje wyciągnąć z niej dwa razy te same dane
melkorm
  1. SELECT * FROM zawiadomienie z INNER JOIN user u ON ( z.zglaszajacy_id = u.id ) INNER JOIN user ON ( z.zawiadamiany_id = u.id );


Spróbuj tak ... .
motorolka24
nie działa a poza tym tablice auto ominąłeś sad.gif
kefirek
A tak
  1. SELECT z.*, a.*, u.* FROM zawiadomienie z
  2. LEFT JOIN auto a ON z.zawiadamiany_id=a.user_id
  3. LEFT JOIN user u ON a.user_id=u.id
melkorm
Cytat
nie działa a poza tym tablice auto ominąłeś


bo w 1 poście nie ma o niej ani słowa? Wróżką nie jestem żeby wiedziec co ją łaczy z resztą tabel ... ;] I działa(ale bez auto) ;p
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.