Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wielokrotne grupowanie
Forum PHP.pl > Forum > Bazy danych > MySQL
24xls
Witam,
próbowałem przeszukać forum, ale nie znalazłem podobnego tematu.

Czy możliwe jest żeby mySQL zwrócił tablicę wielowymiarową? Domyślam się że nie, poniższe zapytanie nie działa do końca tak jakbym chciał:
  1. SELECT firma, SUM(koszt) AS k FROM firmy WHERE lokalizacja=1 GROUP BY firma, STATUS ORDER BY k

dostaję:
w1: firma1, status0, koszt
w2: firma1 ,status1, koszt
w3: firma2, status0, koszt ...

Pole status przyjmuje tylko dwie wartości, więc kombinuję połączyć wiersze z jednej tabeli wybrane z różnymi warunkami. Poniższe zapytanie oczywiście nie działa:

  1. SELECT firma, SUM(koszt) AS 's0-k' FROM firmy WHERE lokalizacja=1 AND STATUS=0
  2. LEFT JOIN firma, SUM(koszt) AS 's1-k' FROM firmy WHERE lokalizacja=1 AND STATUS=1 USING (firma)
  3. GROUP BY firma ORDER BY 's0-k'


Chciałbym otrzymać coś takiego:
w1: firma1, s0-koszt, s1-koszt
w1: firma2, s0-koszt, s1-koszt
w1: firma3, s0-koszt, s1-koszt

Pytanie czy jest jakiś sposób na zwrócenie rekordu zawierającego wyniki dwóch (lub więcej) zapytań?
Mogę oczywiście oprogramować to w phpie ale obecnie mam fazę na naukę SQLa, więc próbuję wyciągać możliwie precyzyjne wynik z bazy. winksmiley.jpg
Indeo
Możesz użyć podzapytań na zasadzie:

  1. U.userid,
  2. (SELECT sum(naleznosc) FROM naleznosci WHERE naleznosci.userid=U.userid) AS naleznosci,
  3. (SELECT sum(wplaty) FROM wplaty WHERE wplaty.userid=U.userid) AS wplaty,
  4. (SELECT count(*) FROM zamowienia WHERE zamowienia.userid=U.userid) AS liczba_zamowien
  5. FROM users U;



Możesz robić zapytania do wyniku innego zapytania:

  1. SELECT sum(naleznosc) FROM ( SELECT sum(naleznosc) FROM naleznosci WHERE rok_spr=2008 AND mies_spr=1 GROUP BY naleznosci.userid
  2. ) AS t1
  3. WHERE t1.userid=1234;



Wreszcie można użyć JOIN'ów, które są najszybsze w wykonaniu jednak czasem trudne do zaaranżowania, dlatego wymyślono podzapytania. Możliwości w SQL jest naprawdę wiele.
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-2024 Invision Power Services, Inc.