Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Problem z zapytaniem SQL
lkj
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 16.08.2008

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Musisz dodać LEFT JOIN by dołaczyć do swojego zapytania jeszcze tabelę z użytkownikami


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lkj
post
Post #3





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 16.08.2008

Ostrzeżenie: (0%)
-----


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ę?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lkj
post
Post #5





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 16.08.2008

Ostrzeżenie: (0%)
-----


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ć.

Ten post edytował lkj 21.11.2012, 14:20:00
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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ą.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lkj
post
Post #7





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 16.08.2008

Ostrzeżenie: (0%)
-----


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


Ten post edytował lkj 21.11.2012, 14:32:37
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lkj
post
Post #9





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 16.08.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lkj
post
Post #11





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 16.08.2008

Ostrzeżenie: (0%)
-----


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)?

Ten post edytował lkj 21.11.2012, 14:57:40
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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ą...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lkj
post
Post #13





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 16.08.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 03:48