Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Pobranie danych z podzapytaniem
Forum PHP.pl > Forum > Przedszkole
Siner
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.♦
Kicok
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)
nevt
  1. SELECT * FROM uzytkownik LEFT JOIN uzytkownik2grupa USING (uzytkownikId) LEFT JOIN grupa USING (grupaId);
Siner
@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ć.
nevt
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ąć
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.