Mysql
 sql >> база данни >  >> RDS >> Mysql

База данни с рецепти, търсене по съставка

Тъй като рецептата може да използва множество съставки и вие търсите рецепти, които използват една или повече от посочените съставки, трябва да използвате DISTINCT ключова дума за предотвратяване на дублиращи се резултати, когато рецептата използва повече от една съставка от посочения списък. Също така можете да използвате IN клауза за филтриране по множество идентификатори на съставките.

select DISTINCT r.name
from 
    recipes r
    inner join ingredient_index i
    on i.recipe_id = r.recipe_id
where i.ingredient_id IN (7, 5);

Като алтернатива, ако търсите рецепти, които използват всички съставки, посочени в списъка, тогава можете да групирате резултатите по име на рецепта и да проверите дали броят на записите е същият като броя на съставките във вашия списък.

select r.name
from 
    recipes r
    inner join ingredient_index i
    on i.recipe_id = r.recipe_id
where i.ingredient_id IN (7, 5)
GROUP BY r.name
HAVING COUNT(*) = 2

Това предполага, че няма да има дублирани записи със същия (recipe_id, ingredient_id) кортеж (по-добре е осигурено с ограничение UNIQUE).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да активирате MySQL Slow Query Log в MySQL

  2. Разлика между NULL и празна стойност в Mysql

  3. Как да нулирате паролата за root на MySQL

  4. Docker:Комбинирайте няколко изображения

  5. Извличане на последния вмъкнат идентификатор с Mysql