2013-05-17 97 views
1

具有特定值的條目我有兩個MySQL表人和狗:DBIx ::類:計數相關表

TABLE humans: 
id int, name varchar(32) 
TABLE dogs 
id int, human int, dead int 

每個人可以有零種或更多的狗。如果狗死了,那麼整數死亡被設置爲「1」。現在我想要統計所有有過死狗的人。

SELECT COUNT(*) FROM humans WHERE 
    (SELECT count(*) FROM dogs WHERE humans.id = dogs.human AND dead = 1) > 0 

我怎麼能認識到這一點與皮爾斯偉大DBIx ::類:

在SQL這可以用做什麼?

回答

0

用子查詢很好地解決這個問題很困難,因爲SQL::Abstract(DBIx :: Class用於構建查詢)假定您的WHERE子句的元素中總是有列名稱。你可能不得不求助於字面SQL:

my $count = $schema->resultset('Humans')->count(
    \[ '(SELECT COUNT(*) FROM dogs WHERE human = me.id AND dead = 1) > 0' ] 
);