sql >> Database >  >> RDS >> Mysql

Receptendatabase, zoeken op ingrediënt

Aangezien een recept meerdere ingrediënten kan gebruiken en u op zoek bent naar recepten die een of meer van de gespecificeerde ingrediënten gebruiken, moet u de DISTINCT gebruiken trefwoord om dubbele resultaten te voorkomen wanneer een recept meer dan één ingrediënt uit de opgegeven lijst gebruikt. U kunt ook IN . gebruiken clausule om op meerdere ingrediënt-ID's te filteren.

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

Als u op zoek bent naar recepten die alle ingrediënten in de lijst gebruiken, kunt u de resultaten groeperen op receptnaam en controleren of het aantal records hetzelfde is als het aantal ingrediënten in uw lijst.

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

Dit veronderstelt dat er geen dubbele records zijn met dezelfde (recipe_id, ingrediënt_id) tuple (beter verzekerd met een UNIEKE beperking).



  1. PHP PDO bindParam() en MySQL BIT

  2. Hoe kan ik NULL-gegevens invoegen in de MySQL-database met Python?

  3. LOWER() Functie in Oracle

  4. WooCommerce geserialiseerde metawaarde-array in wp_postmeta-tabel