SQL连接问题

SQL连接问题,sql,mysql,mysql-error-1054,Sql,Mysql,Mysql Error 1054,我有两张桌子 tblparents ---------- parentid husbandid wifeid tblnode ------- nodeid personid parentid 我想要的是一个SQL语句,它获取parentid、hurst/wifeid以及parentid相等的tblnode中的行数 代码是我写的 SELECT t.parentid, t.spouseid, t.active, c.count FROM (SELECT parentid, wifeid

我有两张桌子

tblparents
----------
parentid
husbandid
wifeid 

tblnode
-------
nodeid
personid
parentid
我想要的是一个SQL语句,它获取parentid、hurst/wifeid以及parentid相等的tblnode中的行数

代码是我写的

SELECT t.parentid, t.spouseid, t.active, c.count FROM    
(SELECT parentid, wifeid spouseid from tblparents WHERE husbandid=1
UNION
SELECT parentid, husbandid spouseid from tblparents WHERE wifeid=1) t 
INNER JOIN 
(SELECT COUNT(*) count FROM tblnodes WHERE tblnodes.parentid=t.parentid) c;
它在“where子句”中给出了一个错误1054-未知列“t.parentid”

有什么办法解决吗

非常感谢,

试试这个:

SELECT t.parentid, t.spouseid, t.active, COALESCE(c.count, 0) AS count
FROM (
    SELECT parentid, wifeid spouseid
    FROM tblparents
    WHERE husbandid = 1

    UNION

    SELECT parentid, husbandid spouseid
    FROM tblparents
    WHERE wifeid = 1
) t
LEFT JOIN (
    SELECT parentid, COUNT(*) count
    FROM tblnodes
    GROUP BY parentid
) c
    ON c.parentid = t.parentid
SELECT t.parentid, t.spouseid, t.active, c.count FROM    
(SELECT parentid, wifeid spouseid from tblparents WHERE husbandid=1
UNION
SELECT parentid, husbandid spouseid from tblparents WHERE wifeid=1) t 
INNER JOIN 
(SELECT parentid, COUNT(*) count
 FROM tblnodes GROUP BY parentid) c
ON c.parentid=t.parentid) c ;

如果我正确理解你的问题:

SELECT t.parentid, t.husbandid, t.wifeid, COUNT(*)
LEFT JOIN tblnode n
    ON n.parentid = t.parentid
GROUP BY t.parentid. t.husbandid, t.wifeid

编辑:这将返回最小计数1。

出现语法错误。试试这个:

SELECT t.parentid, t.spouseid, t.active, c.count FROM    
(SELECT parentid, wifeid spouseid from tblparents WHERE husbandid=1
UNION
SELECT parentid, husbandid spouseid from tblparents WHERE wifeid=1) t 
INNER JOIN 
(SELECT parentid, COUNT(*) count
 FROM tblnodes GROUP BY parentid) c
ON c.parentid=t.parentid) c ;
但是,以下查询将执行得更好:

SELECT t.parentid, t.wifeid spouseid, t.active, COUNT(t.parentid) CNT
FROM tblparents t LEFT JOIN tblnode c
    ON t.parentid = c.parentid
GROUP BY t.parentid. t.wifeid, t.active

我认为在final语句中没有识别表别名t。您需要为unioned语句返回的set分配一个别名,并在select count*语句中引用该别名

这起作用了,现在又出现了另一个问题。如果count为0,则不会将其显示为行。即使计数为0,我也希望它显示该行。这非常有效,谢谢Cybernate选择t.parentid,t.wifeid-spoutseId,t.active,COUNTc.personid-CNT从tblparents t LEFT在t.parentid=c.parentid上加入tblnodes c,其中t.husbandid=1组BY t.parentid,t.wifeid