sql >> Databáze >  >> RDS >> Mysql

Databáze receptů, vyhledávání podle přísad

Protože recept může používat více ingrediencí a vy hledáte recepty, které používají jednu nebo více zadaných ingrediencí, měli byste použít DISTINCT klíčové slovo, abyste zabránili duplicitním výsledkům, pokud recept používá více než jednu přísadu ze zadaného seznamu. Můžete také použít IN klauzule pro filtrování podle více ID složek.

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);

Případně, pokud hledáte recepty, které používají všechny přísady uvedené v seznamu, můžete výsledky seskupit podle názvu receptu a zkontrolovat, zda je počet záznamů stejný jako počet přísad ve vašem seznamu.

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

To za předpokladu, že nebudou existovat duplicitní záznamy se stejnou (recipe_id, folder_id) n-ticí (lépe zajištěno s omezením UNIQUE).



  1. Fulltextové vyhledávání MySQL ve více tabulkách

  2. Jak vytvářet a používat pohledy MySQL

  3. 2 způsoby, jak vrátit pouze číselné hodnoty ze sloupce databáze SQLite

  4. Jak funguje sys.dm_exec_describe_first_result_set na serveru SQL Server