2017-06-14 93 views
0

我有这个MySQL查询。它产生一个错误,Unknown column 'lp.amount' in 'field list'从多个表中选择半连接

SELECT l.*, SUM(lp.amount) AS landPayMonth, p.pName, u.uName, SUM(ci.amount) AS totAmnt, t.unitId FROM (SELECT distinct landlord_payment.id FROM landlord_payment) lp, (SELECT distinct cashIn.id FROM cashIn) ci, landlords l, properties p, units u, tenants t WHERE ci.tenantId=t.id AND l.id=lp.landlordId AND t.unitId=u.id AND u.propertyId=p.id AND p.landlordId=l.id AND STR_TO_DATE(ci.registeredTime, "%Y-%m")=STR_TO_DATE(CURDATE(), "%Y-%m") 
GROUP BY l.id; 

请帮我。

+0

我不知道你到底想要做什么。把一些样本输入和预期输出。 –

回答

1
SELECT 
    l.*,SUM(lp.amount) AS landPayMonth,p.pName,u.uName,SUM(ci.amount) AS totAmnt, 
    t.unitId 
FROM 
    (SELECT DISTINCT landlord_payment.id,landlord_payment.amount,landlord_payment.landlordId FROM landlord_payment) lp, 
    (SELECT DISTINCT cashIn.id,cashIn.tenantId,cashIn.registeredTime,cashIn.amount FROM cashIn) ci,landlords l,properties p,units u,tenants t 
WHERE 
    ci.tenantId = t.id 
     AND l.id = lp.landlordId 
     AND t.unitId = u.id 
     AND u.propertyId = p.id 
     AND p.landlordId = l.id 
     AND STR_TO_DATE(ci.registeredTime, '%Y-%m') = STR_TO_DATE(CURDATE(), '%Y-%m') 
GROUP BY l.id; 

您可以尝试上面的代码。

希望这会帮助你。

+0

'ci.amount'会抛出错误。 –

+0

lp.landlordId引发错误。 – Mwotie

+0

尝试更新一个..! 它解决了您的问题吗? –