Помогите пожалуйста понять, как сделать выборку в задаче:
Есть таблица (извините, туповато выглядит, но ничего умнее не придумалось).
Нужно найти животных, которые не едят аллергичную еду
Если я делаю вот такую выборку, то вываливаются все строки, исключая аллергичные продукты, но мне нужно исключить животных, которые могут их есть (т.е. в итоге должен остаться только лось)
SELECT д.animal
FROM диета д
join цвет ц on д.meal = ц.meal
join аллергия а on a.color = ц.color
where а.allergy not in ('да')
И я совсем не понимаю, как составить запрос (подзапрос), чтобы исключить самих животных.
Вот пример
select * from exampl_diet d1
where d1.animal not in(
-- Получаем список всех животных которые могут есть аллергенные продукты
select distinct d.animal from exampl_diet d
where d.meal in (
-- Получаем список всех аллергенных продуктов
select meal from exampl_color c, exampl_allergy a
where c.color=a.color and a.allergy = 'да'
)
)
структуры таблиц для примера
CREATE TABLE `exampl_allergy` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`color` varchar(45) DEFAULT NULL,
`allergy` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `exampl_color` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`meal` varchar(45) DEFAULT NULL,
`color` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `exampl_diet` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`animal` varchar(45) DEFAULT NULL,
`meal` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
)
Я сначала внешние ключи настроил
SELECT animal_meal.animal
FROM animal_meal
INNER JOIN color_meal ON color_meal.meal = animal_meal.meal
INNER JOIN allergy_color ON allergy_color.color = color_meal.color
GROUP BY animal_meal.animal
HAVING GROUP_CONCAT(DISTINCT allergy_color.allergy) = 'нет'
Попробуйте такой вариант, он должен работать:
SELECT DISTINCT д.animal
FROM диета д
LEFT JOIN цвет ц on д.meal = ц.meal
LEFT JOIN аллергия а on a.color = ц.color
WHERE а.allergy = 'нет'
Хотя если Вы дополнительно избавитесь от кириллицы в именах таблиц, это будет очень правильное решение.
Виртуальный выделенный сервер (VDS) становится отличным выбором
парсю информацию с каналов телеграм, и необходимо добавить в базу данных MySQL спарсенные значенияПроблема возникает с этой строчкой:
Допускается ли использование тегов (header, main, footer) по отдельности? Например на странице будет присутствовать main и footer, но отсутствовать headerИли...
Всем доброго вечере! Подскажите пожалуйста как сверстать этот элемент слайдера(фото прикрепила)Ситуация следующая, при наведение мишки...