Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Zapytanie z grupowaniem
Forum PHP.pl > Forum > Przedszkole
lukasamd
Witam,
mam tabelę o takiej strukturze:

id | element_id | type_id | value


Chciałbym w 1 zapytaniu pobrać określone id i element_id pogrupowane poprzez type_id. Do jednego type_id może być wiele element_id
Jak więc powinno to wyglądać, aby w PHP można było to potem sensownie podzielić (musi być 1 zapytanie)?

Nie wiem czy zapytanie jest dobre, ale powinno zobrazować o co mi chodzi:

  1. SELECT * FROM tabela
  2. WHERE element_id IN (1,5,8,9,10) AND type_id = '1'
  3. OR element_id IN (2,7,15) AND type_id = '2'
  4. OR element_id IN (3,6,12,13,14) AND type_id = '3'
  5. ORDER BY type_id


Obawiam się jednak, że OR zostanie źle potraktowane, tzn. równolegle do AND, a powinno być tak jak w zapisie logicznym (nawiasy):

((element_id IN (1,5,8,9,10)) && (type_id = 1)) || ((element_id IN (2,7,15)) && (type_id = 2)) || ((element_id IN (3,6,12,13,14)) && (type_id = 3))

Aha, dla różnych type_id mogą występować TAKIE SAME element_id (nie uwzględniłem tego w przykładzie).
skowron-line
A czy
element_id IN (1,5,8,9,10) AND type_id = '1'
oprócz liczb w nawiasie element_id może przyjąć inną wartość type_id questionmark.gif
lukasamd
Nie.
Type_id są wstawiane "na sztywno". Zakres IN de facto dla każdego przedziału również jest jawny (acz kompletowany i wrzucany do zapytania po kilku operacjach w php).

Chodzi o to, że dla innych type_id mogą być wartości element_id o takich samych wartościach (traktujemy type_id niejako kategorię), zaś chciałbym to logicznie w sql rozpisać.
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.