У меня есть таблица, содержащая множество разных записей для спецификаций продуктов, продукты могут отображаться несколько раз в таблице, так как они имеют разные цвета. Чтобы отображать продукты на экране, мне нужно выбрать их список с цветом ЖЕЛТЫЙ, но если ЖЕЛТЫЙ нет, мне нужен цвет BLUE, иначе я не хочу этого продукта.Выберите конкретную запись в группе записей для всех групп записей в MySQL
Упрощенные Продукты пример:
+----+--------+ | ID | NAME | +----+--------+ | 1 | Prod A | | 2 | Prod B | | 3 | Prod C | | 4 | Prod D | +----+--------+
Simplied Spec таблица:
+----+------------+--------+ | ID | ID_PRODUCT | COLOR | +----+------------+--------+ | 1 | 1 | BLUE | | 2 | 1 | YELLOW | | 3 | 2 | RED | | 4 | 2 | PINK | | 5 | 3 | BLUE | | 6 | 3 | GRAY | | 7 | 4 | YELLOW | +----+------------+--------+
Ожидаемые результаты:
+----+------------+--------+ | ID | ID_PRODUCT | COLOR | +----+------------+--------+ | 2 | 1 | YELLOW | | 5 | 3 | BLUE | | 7 | 4 | YELLOW | +----+------------+--------+
Сырье SQL для этого примера:
CREATE TABLE `colors` ( `ID` int(11) NOT NULL, `ID_PRODUCT` int(11) DEFAULT NULL, `COLOR` varchar(16) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `products` ( `ID` int(11) NOT NULL, `NAME` varchar(16) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `colors` VALUES (1,1,'BLUE'),(2,1,'YELLOW'),(3,2,'RED'),(4,2,'PINK'),(5,3,'BLUE'),(6,3,'GRAY'),(7,4,'YELLOW'); INSERT INTO `products` VALUES (1,'Prod A'),(2,'Prod B'),(3,'Prod C'),(4,'Prod D');
Мое плохое английское понимание помогло мне правильно понять вашу озабоченность по поводу ответа, который я принял. Действительно, в ответе Даршана Мехты идентификатор не всегда будет правильным. Ваш ответ более сложный, но правильный. –