Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: set i group by
Forum PHP.pl > Forum > Bazy danych > MySQL
janek
witam,

mam pole set w bazie, opcje powiedzmy że są 'WAW','KTW','KRK'

i teraz mam 4 wiersze, w których zapisane są następujące dane:

1. 'WAW'
2. 'WAW'
3. 'WAW','KTW'
4. 'KTW'

pobieram dane i grupuję je przez group by. chciałbym żeby kolumna set zwróciła mi w jednym wierszu wyniku zapytania wszystkie posiadane dane, czyli:

'WAW','KTW'

a nie tak jak zwraca teraz, czyli:

'WAW',
'WAW','KTW'
'KTW'

macie jakiś pomysł jak to zrobić?

z góry dzięki za pomoc smile.gif
Draugfor
Nie wiem, czy dobrze rozumiem, ale moze
  1. SELECT DISTINCT ...
janek
nie, to nie pomaga sad.gif
Draugfor
To podaj strukture bazy i przykladowe zapytanie, ktore zwraca zly wynik.
janek
interesująca mnie tabela bazy:

  1. CREATE TABLE `go_oferta_data_cena` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `oferta_id` int(11) NOT NULL DEFAULT '0',
  4. `data` date NOT NULL DEFAULT '0000-00-00',
  5. `cena_1_t` decimal(4,0) NOT NULL DEFAULT '0',
  6. `dni_1_t` tinyint(4) NOT NULL DEFAULT '0',
  7. `cena_2_t` decimal(4,0) NOT NULL DEFAULT '0',
  8. `dni_2_t` tinyint(4) NOT NULL DEFAULT '0',
  9. `waluta` enum('PLN','EUR','USD') NOT NULL DEFAULT 'PLN',
  10. `wyzywienie` enum('domyslne','brak','BB','HB','FB','all') NOT NULL DEFAULT 'domyslne',
  11. `wylot_z` SET('domyslne','WAW','KTW','KRK','WRO','POZ','GDN','SZ','SO','RZE','B-B','BIAŁ','BYDG','CZST','GLW','KLCE','RAD','OPO','ŁDZ','PRAG','wla') NOT NULL DEFAULT 'domyslne',
  12. `last_minute` enum('0','1','2') NOT NULL DEFAULT '2',
  13. PRIMARY KEY (`id`),
  14. KEY `oferta_id` (`oferta_id`)
  15. );


zapytanie:
  1. SELECT d.wylot_z, count(d.wylot_z) AS ile
  2. FROM go_kraj k, go_region r, go_miasto m1 LEFT JOIN go_miasto m2 ON m2.id=m1.dzielnica_m_id, go_hotel h, go_oferta o, go_oferta_data_cena d
  3. WHERE k.id=r.kraj_id AND r.id=m1.region_id AND m1.id=h.miasto_id AND h.id=o.hotel_id AND o.id=d.oferta_id AND o.wys='1' AND (d.DATA >= date_add(now(), interval 14 day) OR (d.DATA >= now() AND d.last_minute='1')) AND k.id='3' AND (d.wylot_z!='0' AND d.wylot_z!='domyslne')
  4. GROUP BY wylot_z
  5. ORDER BY d.wylot_z


chodzi o to że takie zapytanie zwraca np.:
wylot_z | ile
WAW | 3
KTW | 1
KTW,KRK | 4
WAW,WRO | 1
WAW,KTW,WRO | 1
KRK,WRO | 1
WAW,POZ | 30
KRK,WRO,SZ,SO | 1
RZE,OPO | 4

czyli mam 9 wierszy wyników zapytania, a ja chciałbym mieć to w jednym wierszu (kolumna "ile" nie jest wtedy ważna).
popbart
No to widać że baza jest źle zaplanowana.
Pozostaje ci obrobienie tego za pomocą php.
janek
ok, tego się właśnie bałem, ale chciałem się upewnić ...

dzięki za pomoc
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.