Avatar billede yezper Nybegynder
22. marts 2010 - 14:53 Der er 3 kommentarer og
1 løsning

GROUP BY?

Hej alle,

Jeg har følgende database:

CREATE TABLE `openinghours` (
  `openinghour_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `listing_code` char(255) NOT NULL,
  `weekday` tinyint(50) NOT NULL,
  `hours` char(50) NOT NULL,
  PRIMARY KEY (`openinghour_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8

Feltet weekday er et tal mellem 1 og 7 (mandag til søndag,) og hours indeholder et tidsrum, f.eks. 15:00 - 02:00, så et datasæt kunne se således ud:

+----------------+--------------+---------+---------------+
| openinghour_id | listing_code | weekday | hours        |
+----------------+--------------+---------+---------------+
|              1 | MBC          |      1 | 15:00 - 02:00 |
|              2 | MBC          |      2 | 15:00 - 02:00 |
|              3 | MBC          |      3 | 15:00 - 02:00 |
|              4 | MBC          |      4 | 15:00 - 03:00 |
|              5 | MBC          |      5 | 15:00 - 05:00 |
|              6 | MBC          |      6 | 15:00 - 05:00 |
|              7 | MBC          |      7 | 15:00 - 02:00 |
+----------------+--------------+---------+---------------+

På én eller anden måde skal jeg have hevet et resultat ud af databasen, som ser således ud:

weekday hours
1,2,3,7 15:00 - 02:00
4      15:00 - 03:00
5,6    15:00 - 05:00

Altså skal der grupperes efter hours-feltet. Jeg har prøvet med

SELECT * FROM openinghours WHERE listing_code = 'MBC' GROUP BY hours ORDER BY `weekday` ASC;

Men det returnerer følgende, hvilket sikkert er korrekt nok, men ikke det resultatsæt jeg søger:

+----------------+--------------+---------+---------------+
| openinghour_id | listing_code | weekday | hours        |
+----------------+--------------+---------+---------------+
|              1 | MBC          |      1 | 15:00 - 02:00 |
|              4 | MBC          |      4 | 15:00 - 03:00 |
|              5 | MBC          |      5 | 15:00 - 05:00 |
+----------------+--------------+---------+---------------+

Er der nogen som kan hjælpe med den korrekte query?
Avatar billede erikjacobsen Ekspert
22. marts 2010 - 15:57 #1
Det er vist ikke standard SQL, men skulle virke i netop MySql: http://www.mysqlperformanceblog.com/2006/09/04/group_concat-useful-group-by-extension/

Ellers ville løsningen være at programmere sig ud af det i det bagvedliggende sprog
Avatar billede yezper Nybegynder
22. marts 2010 - 17:05 #2
Det ser ud til at virke perfekt - tak for hjælpen. Send en svar - så får du dine point :o)
Avatar billede erikjacobsen Ekspert
22. marts 2010 - 18:10 #3
Jeg samler slet ikke på point, tak. Svar selv, og accepter dit eget svar.
Avatar billede yezper Nybegynder
22. marts 2010 - 19:03 #4
Ok, tak for hjælpen igen :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester