2011-03-23 54 views
0

我想今天是不是我的日子 - 对不起,但我还有一个COUNT(*)的问题:MySQL的加入与COUNT(*)

我有这个简单的查询:

SELECT * FROM domains 
LEFT JOIN subpages ON subpages.domainid = domains.id 
WHERE domains.id = 293 
AND subpages.seitenart = 'Startseite' 

它可以完美运行但我需要一个额外

SELECT COUNT(*) AS total FROM subpages WHERE subpages.statussub = '1' AND subpages.domainid = 293 

好吧,为了更好的理解: 我有表“域”和表“子页面”。现在我想显示一个域的Domaindetails,我需要领域subpages.seitenart =“Startseite”的域表和子页面表。

此外,我都数不过来的所有子页面的子页表,其中subpages.statussub =“1”

希望这是更好的解释!

任何人都可以帮忙吗?

感谢, 萨沙

+0

你能不能把第二选择为选择在第一个查询? – ChrisH 2011-03-23 14:11:51

+0

你是什么意思“需要额外”?另外运行查询:) – Quassnoi 2011-03-23 14:12:15

+0

我会建议有计数查询作为单独的选择,而不是做一些SQL技巧将这两个查询合并成一个。 – anubhava 2011-03-23 14:12:29

回答

1

如果你不想限制COUNT为seitenart =“Startseite”尝试:

SELECT domains.*, COUNT(s1.<column_name>) as total 
FROM subpages s1, domains LEFT JOIN subpages s2 ON s2.domainid = domains.id 
WHERE domains.id = 293 
AND s2.seitenart = 'Startseite' 
AND s1.statussub = '1' 
AND s1.domainid = domains.id 
+0

你是对的,我不想限制计数seitenart =“Startseite”,但与您的查询我得到一个错误,“未知列s1在字段列表” - 如果我改变计数(s1)计数(s1 。*)然后我需要一组?!?!任何帮助? – codeworxx 2011-03-23 14:20:22

+0

我弄错了 - 我不认为你可以在COUNT()函数中使用s1。*。尝试使用s1.subpage_id或您在子页面表上拥有的任何唯一ID。 – Jon 2011-03-23 14:24:31

+0

是的,这工作。非常感谢! – codeworxx 2011-03-23 14:32:51