Hallo, ich brauche Hilfe bei diesem Problem. Ich arbeite Web-Anwendung und für die Datenbank bin ich mit Sqlite. Kann mir jemand mit einer Abfrage aus der Datenbank helfen, die optimiert werden muss == schnell =)
Ich habe Tisch x:
ID | ID_DISH | ID_INGREDIENT
1 | 1 | 2
2 | 1 | 3
3 | 1 | 8
4 | 1 | 12
5 | 2 | 13
6 | 2 | 5
7 | 2 | 3
8 | 3 | 5
9 | 3 | 8
10| 3 | 2
.... ID_DISH ist die ID der verschiedenen Gerichte, ID_INGREDIENT ist die Zutat, aus der das Gericht besteht: In meinem Fall wird das Gericht mit der ID 1 aus den Zutaten mit den IDs 2 und 3 hergestellt.
In dieser Tabelle habe ich mehr als 15000 Zeilen und meine Frage ist:
Ich benötige eine Abfrage, die Zeilen abruft, in denen ich IDs von Gerichten finden kann, die nach der Anzahl der Inhaltsstoffe ASC geordnet sind, die ich meinem Algorithmus hinzugefügt habe.
Beispiel: foo(2,4) ergibt Zeilen in dieser Reihenfolge:
ID_DISH | count(stillMissing)
10 | 2
1 | 3
Gericht mit id 10 hat Zutaten mit id 2 und 4 und hat keine 2 weiteren, dann ist
Meine Frage ist:
SELECT
t2.ID_dish,
(SELECT COUNT(*) as c FROM dishIngredient as t1
WHERE t1.ID_ingredient NOT IN (2,4)
AND t1.ID_dish = t2.ID_dish
GROUP BY ID_dish) as c
FROM dishIngredient as t2
WHERE t2.ID_ingredient IN (2,4)
GROUP BY t2.ID_dish
ORDER BY c ASC
funktioniert, aber es ist langsam....