Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Problem z zapytaniem SQL
Forum PHP.pl > Forum > Przedszkole
lkj
witam,

chcę wykonać takie zapytanie SQL:

  1. SELECT user_id FROM phpbb_user_group WHERE group_id='5';


zapytanie działa i mam podane user_id
pytanie jak mam wykonać zapytanie sql aby byly te user_id połączone z username z tabeli phpbb_users (abym wiedział jaki numer id łączy się z jakim użytkownikiem), jak wykonac takie zapytanie sql?
nospor
Musisz dodać LEFT JOIN by dołaczyć do swojego zapytania jeszcze tabelę z użytkownikami
lkj
Czyli zapytanie SQL będzie wyglądać następująco:

  1. SELECT user_id FROM phpbb_user_group WHERE group_id='5' LEFT JOIN phpbb_users ON phpbb_user_group.user_id=phpbb_users.username;


Zgadza się?
nospor
Nie. WHERE jest po LEFT JOIN a nie przed. Masz to dokładnie opisane w dokumentacji.
Poza tym skoro chcesz pobrać username to musisz je też napisać zaraz po SELECT tak jak to zrobiłeś z user_id
lkj
nospor ale przecież username jest w tabelii phpbb_users nie w phpbb_user_group.
  1. SELECT user_id, username FROM phpbb_user_group, phpbb_users LEFT JOIN WHERE group_id='5' ON phpbb_user_group.user_id = phpbb_users.username;


Nic nie działa, czytam o tym LEFT JOIN i nie dam rady takiego zapytania utworzyć.
nospor
Cytat
nospor ale przecież username jest w tabelii phpbb_users nie w phpbb_user_group.
No i co? Po SELECT mówi się jakie chcemy pobrać kolumny, niezależnie w jakiej są tabeli

"PO LEFT JOIN" znaczy ze ma byc PO a nie W..... Mówiłem byś zajrzał do dokumentacji... tam masz wszystko opisane....

  1. SELECT user_id, username FROM phpbb_users LEFT JOIN ON phpbb_user_group.user_id = phpbb_users.username WHERE group_id='5'

Już widzisz co znaczy PO a co W?

phpbb_user_group.user_id = phpbb_users.username
i czemu łączysz ID z name? Przecież jedno to ID a drugie to NAME. To są dwie różne rzeczy. ID masz łaczyć z właśicwym ID a nie nazwą.
lkj
I mam taki błąd:
Kod
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON phpbb_user_group.user_id = phpbb_users.username WHERE group_id='5' LIMIT' at line 1
nospor
Bo po left join ma być nazwa tabeli
  1. SELECT user_id, username FROM phpbb_user_group LEFT JOIN phpbb_users ON phpbb_user_group.user_id = phpbb_users.username WHERE group_id='5'

tylko pamietaj by poprawic o to:
phpbb_user_group.user_id = phpbb_users.username
lkj
I mam teraz taki błąd:
Kod
#1052 - Column 'user_id' in field list is ambiguous

Chyba nie uda mi się zrobić tego co chcę smile.gif

Podsumowując:

Mam dwie tabele:

Pierwsza tabela: phpbb_user_group i w niej mam: group_id, user_id.

Gdy wykonuję zapytanie SQL:

  1. SELECT user_id FROM phpbb_user_group WHERE group_id='5';


To wyświetlają mi się tylko numery ID, super smile.gif ale..

Mam też drugą tabelę: phpbb_users a w niej: user_id, username.

Chodzi o to, że chcę wyświetlić numery ID i nazwy użytkowników, którzy należą do group_id=5 i nie wiem jak to zrobić, a nazwy użytkowników mam w tabeli phpbb_users pod username.
nospor
Przecież problem jest znany. Po co go poraz kolejny wyjaśniasz...

Błąd co ci wyskoczył informuje, że user_id istnieje w obu tabelach.
zamiast wiec:
user_id
masz dać:
phpbb_user_group.user_id
lkj
Rozumiem, utworzyłem więc zapytanie SQL:

  1. SELECT phpbb_user_group.user_id, username FROM phpbb_user_group LEFT JOIN phpbb_users ON phpbb_user_group.user_id = phpbb_users.username WHERE group_id='5';


Zapytanie pokzuje numery ID i username, ale tam jest jest username jest w każdym polu wpisane NULL (nie widać nazw użytkowników)?
nospor
A to dlatego że wszystko chcesz by zrobiono za Ciebie.... Ile razy mogę prosić byś poprawił o to:
ON phpbb_user_group.user_id = phpbb_users.username
?
Wyjaśniałem ci już ze nie możesz łączyc id z name. Masz łączyc id z właściwym id z drugiej tabeli. Rusz w końcu głową...
lkj
Ruszyłem głową i wyszło:

  1. SELECT phpbb_user_group.user_id, username FROM phpbb_user_group LEFT JOIN phpbb_users ON phpbb_user_group.user_id = phpbb_users.user_id WHERE group_id='5';


Działa smile.gif
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.