Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: GROUP_CONCAT, HAVING...WTF?
Forum PHP.pl > Forum > Bazy danych > MySQL
polishprogrammer
Cześć

mam takie zapytanie (będę cholernie wdzięczny jeśli znajdzie ktoś chętny do pomocy)


  1. SELECT entries.*, GROUP_CONCAT(channels.channel_name) AS channel_names
  2. FROM entry_channel INNER JOIN entries ON entry_channel.entry_id = entries.entry_id
  3. INNER JOIN channels ON entry_channel.channel_id = channels.channel_id
  4. GROUP BY entry_channel.entry_id



chciałbym przefiltrować wyniki tak aby nie stracić danych z GROUP_CONCAT smile.gif

tj konkretnie pobrać rekordy które mają konkretne channel_name ale też zachować ino o innych channel_name

myślałem że mogę wcisnąć "HAVING channel_name IN channel_names" ale się dupa

WHERE chyba odpada bo jest wykonywane przed grupowaniem a ja konieczne potrzebuje dane agregacyjne
prond
GORUP_CONCT robi coś takiego, że jak masz np.: taką tabelkę:
+--------+
| col
+--------+
| Ala
| ma
| kota
+--------+
i napiszesz
  1. SELECT GROUP_CONCAT(col) FROM tab;

To dostaniesz
+--------+
| Alamakota
+--------+
i coś takiego w warunku HAVING zostanie wzięte jako cały ten scalony string, np:
  1. SELECT GROUP_CONCAT(col) FROM tab HAVING GROUP_CONCAT(col) = 'Alamakota';
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.