Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Hilfe bei SQL-Query

Begonnen von imp666, März 17, 2011, 14:44:05

⏪ vorheriges - nächstes ⏩

imp666

Hallo,

ich habe zwei Tabellen:

Tabelle `produkt`: [pid],[name]

pidname
1Stuhl
2Tisch

Tabelle `verwendung`: [id],[pid],[verwendungsart],[eingangszeit]


idpidverwendungsarteingangszeit
111717:15
21017:23
31017:44
42017:49
521918:11

Verwendungsart ist ein Index auf die Verwendungsartentabelle (verwendungsart=0 heisst nicht zugeordnet)
produkt und verwendung sind über pid verknüpft (1:n)

Ich brauche eine Abfrage für ein Endlosformular:
Alle Produkte als Liste, zudem eine Anzahl der Produkte, welche noch keine Verwendungsart haben.
Das Resultat wäre mit obigen Beispieltabellen wie folgt gewünscht:


pidnamebestand
1Stuhl2
2Tisch1

Also der Workflow ist folgender:
Produkte (Tische, Stühle, etc.) treffen ein und jedem Produkt wird die Ankunftzeit (zwecks späterer Auswertung) zugeordnet (und damit ist das jeweilige Produkt verfügbar zur Verwendung). Bei Verwendung muss ich jetzt z.B. wissen ob genug Stühle für eine Bestuhlung da sind.
Wird etwas verwendet, dann erhalten die verwendeten Produkte eine Verwendungsart (>0) und sind somit nicht mehr verfügbar.


Folgende SQL-Query habe ich zusammengestellt, aber die funktioniert nicht (es gibt irgendwelche Probleme mit der Having-Klausel, deren Lösung ich aber nicht finden kann):

SELECT produkt.pid, produkt.bezeichnung, Count(verwendung.id) AS bestand
FROM produkt LEFT JOIN verwendung ON produkt.pid = verwendung.pid
GROUP BY produkt.pid, produkt.bezeichnung, Count(verwendung.id)
HAVING (verwendung.verwendungsart<1)


Hat jemand eine Idee? Oder alternative Vorschläge?


lumbumba

ic kann mich irren aba müsste es nicht
... (verwendung.verwendungsart)<1
lauten?
---

Wurliwurm

Schreib mal statt  HAVING (verwendung.verwendungsart<1)
lieber  WHERE verwendung.verwendungsart < 1

Having ist eine Auswertung von berechneten aggregierten Werten. Die Verwendungsart kommt aber gar nicht vor in der Aggregierung.

imp666

Danke, mit WHERE funktioniert es.
Und ich dachte schon, ich kenne mich aus mit SQL...   :D