Как сделать такой select запрос?

179
21 июля 2017, 02:35

Есть 3 таблицы:

recipe - id, name
ингредиенты - id, name
таблица связей - recipe_ingredient (recipe_id, ingredient_id)

Как мне сделать выборку из данных таблиц, если мне нужно искать рецепт, максимально похожий к выбранным пользователем ингредиентам?

Answer 1

Сначала следует определиться, что вы подразумеваете под «максимально похожий к выбранным пользователем ингредиентам». Например:

  1. В рецепте присутствует максимальное число ингредиентов выбранных пользователем.
  2. В рецепте нет ингредиентов не выбранных пользователем, при этом в рецепте максимум выбранных ингредиентов.

Пример запроса:

SELECT
    recipe_id,
    COUNT(CASE
            WHEN ingredient_id IN (1,2,3) -- Перечень имеющихся ингредиентов через запятую
                THEN NULL
            ELSE 1
          END) AS ing_notfound_count,  
    COUNT(CASE
            WHEN ingredient_id IN (1,2,3) -- Перечень имеющихся ингредиентов через запятую
                THEN 1
          END) AS ing_found_count               
FROM recipe_ingredient
GROUP BY recipe_id
ORDER BY ing_notfound_count ASC, ing_found_count DESC;

Запрос вернет столбцы рецепт, число ингредиентов не указанных пользователем в нем и число указанных ингредиентов в нем.

READ ALSO
Как настроить rsyslog.conf

Как настроить rsyslog.conf

Поступающие логи и таблица в MySQL в которую их необходимо записать имеют следующий вид:

216
Взаимное изменение EditText

Взаимное изменение EditText

Есть два EditText на активити, первый служит для вводка кол-ва штук товара, а второй для ввода кол-ва упаковокПовесил на каждый из них TextChangedListener,...

254
Подсчитать количество слов в строке. Под словом имеется ввиду текст (без спецсимволов и цифр) разделенный пробелом

Подсчитать количество слов в строке. Под словом имеется ввиду текст (без спецсимволов и цифр) разделенный пробелом

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

299
Тестирование Spring-test через MockMvc

Тестирование Spring-test через MockMvc

Добрый день, пытаюсь создать тест для web уровня приложения, есть некий запрос

405