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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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