Thread [MySQL] Sortierung mit NULL-Werten zuerst (7 answers)
Opened by pktm at 2011-04-20 13:29

pktm
 2011-04-20 13:29
#147893 #147893
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich habe hier (mal wieder) eine optinale n:1-Relation. Es handelt sich um so eine Gruppen-Zuweisung, also ein Eintrag aus der Tabelle items kann einer Gruppe aus der Tabelle groups zugeordnet werden.

Das Minimalbeispiel sieht so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TABLE `groups` (
`group_id` int(11) NOT NULL AUTO_INCREMENT,
`group` varchar(45) NOT NULL,
PRIMARY KEY (`group_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

INSERT INTO `groups` (group_id,group) VALUES (1, 'group 1');
INSERT INTO `groups` (group_id,group) VALUES (2, 'group 2');

CREATE TABLE `items` (
`item_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`group_id` int(10) unsigned DEFAULT NULL,
`ident` varchar(45) NOT NULL,
PRIMARY KEY (`item_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

INSERT INTO `items` (item_id,group_id,ident) VALUES (1,NULL,'item 1, no group');
INSERT INTO `items` (item_id,group_id,ident) VALUES (2,1,'item 2, g1');
INSERT INTO `items` (item_id,group_id,ident) VALUES (3,2,'item 3, g1');
INSERT INTO `items` (item_id,group_id,ident) VALUES (4,1,'item 4, g1');
INSERT INTO `items` (item_id,group_id,ident) VALUES (5,NULL,'item 5, no group');


Daraus hätte ich jetzt gerne eine Liste aller Items, sortiert nach Gruppe. Die Items ohne Gruppe sollen aber zu erst kommen.

Mein Ansatz zeigt leider alle Items, deren Gruppe NULL ist, als letztes:
Code: (dl )
1
2
3
SELECT * FROM items i
LEFT JOIN groups g ON g.group_id = i.group_id
ORDER BY i.group_id DESC


Kann man das irgendwie umstellen?

Grüße, pktm
Last edited: 2011-04-20 13:43:04 +0200 (CEST)
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread [MySQL] Sortierung mit NULL-Werten zuerst