Необходимо исключить все строки на основе одного условия - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть база данных с тремя таблицами.Одна таблица называется recipe с этими столбцами:

EntryDate, Recipename, IngredientName, IngredientQty, QtyMeasurement

В настоящее время в базе данных только два рецепта.Первый рецепт, называемый Cookies с кухонной мойкой, содержит 17 ингредиентов, а второй рецепт, называемый No Bake Cookies II, содержит только 6 ингредиентов.

В рецепте 1 (Kitchen Sink) в качестве ингредиента используются яйца.Мне нужно найти все рецепты, в которых не используются яйца.

Пока я могу только заставить его вернуть либо оба рецепта, либо ничего.Я уже несколько часов гуглю, но не могу заставить запрос работать.

Это последний запрос, который я пробовал, и он ничего не возвращает.

Use recipes;
Go

Select
    RecipeName
From
    recipe
Where
    RecipeName Not In
    (
        select
            RecipeName
        from
            recipe
        where
            IngredientName Not Like 'EGG%'
        Group By
            RecipeName
    );
Go

Итак, что мне нужно сделать, так это если в рецепте есть ингредиент, который является яйцом, который я должен исключить из рецептаимя из вывода.

У кого-нибудь есть какие-либо идеи, ссылки, которые я могу просмотреть (которые я еще не просматривал), или примеры кода?

Спасибо за любую помощь заранее.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вам нужно избавиться от НЕ НРАВИТСЯ ...

    Use recipes;
    Go

    Select
        RecipeName
    From
        recipe
    Where
        RecipeName Not In
        (
            select
                RecipeName
            from
                recipe
            where
                IngredientName IN ('EGG','EGGS')
            Group By
                RecipeName
        );
    Go

Также, как уже упоминалось в комментариях, я бы рекомендовал не использовать LIKE оператор, потому что вы не получите результатов для рецептов с баклажанами fe

Лучшим подходом будет:

    WHERE IngredientName IN ('EGG','EGGS')
0 голосов
/ 26 апреля 2018

это полезно?

    SELECT * FROM recipe WHERE Recipename NOT IN
    (SELECT Recipename FROM recipe WHERE IngredientName LIKE 'EGG%')

ИЛИ

    SELECT r1.* from recipe r1
    LEFT JOIN recipe r2 on r1.Recipename = r2.Recipename AND r2.IngredientName LIKE 'EGG%'
    WHERE r2.Recipename is NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...