Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Pobranie danych z podzapytaniem
Siner
post
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 6
Dołączył: 2.01.2004

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


Chciałbym pobrać dane z kilu tabel. Dokładniej chodzi o taki przypadek, że mam takie tabele: użytkownik, grupa, uzytkownik2grupa. Jednym zapytaniem chciałbym wyciągnąć dane o użytkowniku ale także wszystkie dane o grupach do których należy.
Na razie tak kombinowałem:
  1. SELECT uzytkownik. * , grupa. *
  2. FROM uzytkownik LEFT JOIN grupa ON uzytkownik.uzytkownikId = (SELECT uzytkownik2grupa.grupaId FROM uzytkownik2grupa WHERE uzytkownik2grupa.uzytkownikId = 1)

Ale średnio mi to wychodzi.♦
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Cytat
  1. ... ON uzytkownik.uzytkownikId = (SELECT uzytkownik2grupa.grupaId FROM ...


Tu jest błąd. Porównujesz ID użytkownika do ID grupy, a powinieneś ID grupy do ID grupy.


PS. Ja bym to rozbił na 2 oddzielne zapytania: pierwsze do pobrania informacji o użytkowniku (jeden wiersz), a drugie do pobrania informacji o wszystkich grupach do których należy (wiele wierszy)
Go to the top of the page
+Quote Post
nevt
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


  1. SELECT * FROM uzytkownik LEFT JOIN uzytkownik2grupa USING (uzytkownikId) LEFT JOIN grupa USING (grupaId);
Go to the top of the page
+Quote Post
Siner
post
Post #4





Grupa: Zarejestrowani
Postów: 159
Pomógł: 6
Dołączył: 2.01.2004

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


@Kicok
racja zrobiłem błąd przy przepisywaniu, robiłem to z takim podzapytaniem:
  1. (SELECT uzytkownik2grupa.uzytkownikId FROM uzytkownik2grupa WHERE uzytkownik2grupa.uzytkownikId = 1)

@nevt
gdzieś w google znalazłem "Klauzuli USING używamy jeśli warunkiem łączenia tabel są pola które maja taką samą nazwę, czyli jest to skrócony zapis poprzedniego zapytania z klauzulą ON." Więc chyba niekoniecznie da się tak rozwiązać.
Go to the top of the page
+Quote Post
nevt
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


a spróbowałeś chociaż, czy działa? czy na wszelki wypadek zasłoniłeś sie od razu googlem?
w twoim kodzie jest:
uzytkownik.uzytkownikId .... uzytkownik2grupa.grupaId ... uzytkownik2grupa.uzytkownikId ....
więc na pewno uzytkownikId jest o bu tabelach... założyłem, że analogicznie masz z grupaId ... jeżeli ci się nie podoba USING przerób to na klauzulę ON - to chyba nie problem?
nie pokazałeś struktury swoich tabel, to przynajmniej nie miej pretensji, że nie udało mi się jej poprawnie odgadnąć

Ten post edytował nevt 20.02.2008, 01:22:11
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 21:34