2010-11-21 11 views
0

I haben die folgenden Modelle in einer Rails 3 app und wählen Anforderung:SQL-Aggregat count = 0

class Item < AR
has_many :holdings

class Holding < AR
belongs_to :item

Die Holding-Modell hat einen 'aktiven' Booleschen Wert.

Ich möchte jedes Element finden, das 0 'aktive' Bestände hat (es kann eine beliebige Anzahl von verbundenen Positionen haben), ich habe einige Kombinationen ausprobiert.

SELECT * from items JOIN
(SELECT holdings.item_id, count(ifnull(item_id,0)) AS hcount FROM holdings
WHERE holdings.active = "t"
GROUP BY holdings.item_id
HAVING hcount = 0)
ON items.id = holdings.item_id

aber dies wird nur Zählungen zurück, die größer sind als 0

Kann mir jemand in die richtige Richtung?

Antwort

1

Verwenden Sie nicht zählen, wenn Sie irgendeine gemeint sind!

Verwenden Sie eine nicht existierende Klausel.

Diese Aussage in Englisch sagt mir geben Sie alle Zeilen von Positionen, wo es keine passenden Zeilen in den Beständen gibt.

+0

danke, das macht viel mehr Sinn! – scaney

Verwandte Themen