Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] LEFT JOIN dwóch tabel
Forum PHP.pl > Forum > Przedszkole
ostrylg
Witam,

mam dwie tabele

FILES
fileId | authorId | inspectorId | name | status

USERS
id_user | first_name | last_name | email | password | initials

teraz mam zapytanie które wyciąga mi z tabeli files wszystkie wiersze, chciałbym żeby za pomocą LEFT JOINa przypisać polu authorId oraz inspectorId z tabeli files wartość initials z tabeli users według authorId = userId oraz inspectorId = userId

Zrobiłem coś takiego ale nie działa :

  1. $query = "SELECT * FROM `files` f LEFT JOIN `users` u ON f.`authorId` = u.`initials` ";


jak to rozwiązać ?
Noidea
Musisz dołączyć tabelę users dwukrotnie - raz łącząc authorId z userId, drugi raz łącząc inspectorId z userId:

  1. SELECT f.`fileId`, u1.`initials` AS author_initials, u2.`initials` AS inspector_initials, f.`name`, f.`status`
  2. FROM `files` f
  3. LEFT JOIN `users` u1 ON ( f.`authorId` = u1.`userId` )
  4. LEFT JOIN `users` u2 ON ( f.`inspectorId` = u2.`userId` )
ostrylg
Dziękuje za szybką odpowiedź, sql wyrzuca mi jednak taki błąd

"Unknown column 'u1.userId' in 'on clause'"

o co mu chodzi ?
Grzyw
Cytat(ostrylg @ 10.03.2011, 16:30:24 ) *
Dziękuje za szybką odpowiedź, sql wyrzuca mi jednak taki błąd

"Unknown column 'u1.userId' in 'on clause'"

o co mu chodzi ?
Przegięcie trochę... Gdybyś choć trochę ruszył głową, widziałbyś, że masz pole id_user zamiast userId i wystarczy podmienić w SQLu...
Noidea
Nie znajduje kolumny userId... ponieważ jej nie ma. Pomyliłem się w zapytaniu. Zamień oba userId na id_user (takie rzeczy powinieneś sam zauważać)
ostrylg
@Grzyw zgadza się przegięcie, ale jestem już padnięty od 6:00 na nogach cały dzień przed kompem więc proszę o wybaczenie.

Oczywiście po zmianie nazw pól działa. Wielkie dzięki Noidea !
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.