2012-03-31 10 views
1

I Tabellen habeneinfache SQL-Ausgabe

  • Produkt (ID, CategoryID, ...)
  • Kategorie (ID, Name, ..) und
  • Fieldvalue (ID, ProductID, Value...)

Das ist mein Abfrage:

select count(*) from Product as p, FieldValue as v, Category c 
where c.ID = 3 and v.Value="XXX" 
and p.ID = v.ProductID and c.ID=p.CategoryID 
group by p.ID 

Meine Absicht ist offensichtlich, die Anzahl der Produkte mit bestimmten Kriterien zu zählen.

Das Problem ist, NHibernate gibt mir eine Liste von Nummern anstelle einer einzelnen Nummer mit der Anzahl der Produkte zurück. Was vermisse ich?

Jede Hilfe wird sehr geschätzt.

Antwort

6

Sie haben die group by

Mit dem statment entfernen Sie haben, erhalten Sie einen Zähler für jede ProduktID anstelle einer Zählung für alle Produkte.

Wenn Sie die Anzahl der Produkte zählen möchten, ersetzen Sie die count(*) mit count(distinct p.id) (noch ohne group by)

+0

Also ich habe 6 Produkte völlig. Wenn ich die Gruppe entferne, bekomme ich das Ergebnis 35 was falsch ist. Weil ich mehrere FieldValues ​​für das gleiche Produkt habe und ein Produkt mehrmals gezählt wird. Ich brauche also irgendeine Art von Gruppe. Nicht sicher wie? –

+0

Also was genau willst du zählen? Die Anzahl der Produkte? Die Anzahl der Feldwerte pro Produkt? Die Anzahl der Produkte pro Kategorie? Die Anzahl der Kategorien, die Produkte haben? –

+0

Die Anzahl der Produkte. Genauer gesagt die Anzahl der Produkte, die bestimmte Kriterien erfüllen. –