Frank: Hilfe bei einer MySQL Query (Joins, Group By, Order By)

Beitrag lesen

Hat sich erledigt, Vielen Dank nochmal an alle die geholfen haben. Hier hat mir der Tipp von EKKi geholfen. Ich habe den Datentyp für den Preis auf Float geändert. Jetzt funktioniert alles perfekt. Für die Vollständigkeit und andere mit dem selben Problem hier nochmal der komplette Code.

  
-- ----------------------------  
-- Table structure for artikel  
-- ----------------------------  
CREATE TABLE `artikel` (  
  `artikel_id` int(10) NOT NULL auto_increment,  
  `group_id` int(10) default NULL,  
  `artikel_name` varchar(100) collate latin1_general_ci default NULL,  
  `artikel_preis` float(10,2) default NULL,  
  PRIMARY KEY  (`artikel_id`)  
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;  
  
-- ----------------------------  
-- Records  
-- ----------------------------  
INSERT INTO `artikel` VALUES ('1', '1', 'Fernseher A', '100.00');  
INSERT INTO `artikel` VALUES ('2', '1', 'Fernseher B', '200.00');  
INSERT INTO `artikel` VALUES ('3', '1', 'Fernseher C', '150.00');  
INSERT INTO `artikel` VALUES ('4', '2', 'Radio A', '25.00');  
INSERT INTO `artikel` VALUES ('5', '2', 'Radio B', '30.00');  
INSERT INTO `artikel` VALUES ('6', '2', 'Radio C', '40.00');  
INSERT INTO `artikel` VALUES ('7', '2', 'Radio D', '20.00');  
INSERT INTO `artikel` VALUES ('8', '3', 'Toaster A', '30.00');  
INSERT INTO `artikel` VALUES ('9', '3', 'Toaster B', '15.00');  
INSERT INTO `artikel` VALUES ('10', '3', 'Toaster C', '12.00');  
INSERT INTO `artikel` VALUES ('11', '3', 'Toaster D', '20.00');  
  
-- ----------------------------  
-- Table structure for gruppen  
-- ----------------------------  
CREATE TABLE `gruppen` (  
  `group_id` int(10) NOT NULL auto_increment,  
  `group_name` varchar(100) collate latin1_general_ci default NULL,  
  PRIMARY KEY  (`group_id`)  
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;  
  
-- ----------------------------  
-- Records  
-- ----------------------------  
INSERT INTO `gruppen` VALUES ('1', 'Fernseher');  
INSERT INTO `gruppen` VALUES ('2', 'Radio');  
INSERT INTO `gruppen` VALUES ('3', 'Toaster');  
  
SELECT  artikel_id,  
        group_id,  
        artikel_name,  
        artikel_preis  
FROM    artikel a1  
WHERE   artikel_preis IN  
        (SELECT a2.artikel_preis  
        FROM    artikel a2  
        WHERE   a1.group_id = a2.group_id  
        )  
    AND (artikel_preis =  
        (SELECT MIN(a3.artikel_preis)  
        FROM    artikel a3  
        WHERE   a1.group_id = a3.group_id  
        )  
     OR artikel_preis =  
        (SELECT MIN(a2.artikel_preis)  
        FROM    artikel a2  
        WHERE   artikel_preis >  
                (SELECT MIN(a3.artikel_preis)  
                FROM    artikel a3  
                WHERE   a1.group_id = a3.group_id  
                )  
            AND a1.group_id = a2.group_id  
        ) )  
ORDER BY artikel_preis ASC