我有查询返回像这样的数据
DATE( expensemaster.`date` ) SUM( feesmaster.PAIDAMOUNT ) SUM( expensemaster.amount )
2013-01-09 0 7824.4
2013-01-15 200 211
请查看查询,
SELECT DATE( expensemaster.`date` ) ,
SUM( feesmaster.PAIDAMOUNT ) ,
SUM( expensemaster.amount )
FROM
feesmaster
INNER JOIN expensemaster
ON DATE( feesmaster.DATETIME ) = DATE( expensemaster.date )
WHERE
DATE( expensemaster.`date` ) BETWEEN '2013-01-09' AND '2013-01-15'
AND DATE( feesmaster.`datetime` ) BETWEEN '2013-01-09' AND '2013-01-15'
GROUP BY
DATE( feesmaster.`datetime` ),
DATE( expensemaster.`date` )
如果我将内部替换为完全,那么当其中一个表中存在匹配但我收到错误时,我可以获得返回行
#1054 - “字段列表”中的未知列'feesmaster.PAIDAMOUNT'
我正在使用phpmyadmin。
答案 0 :(得分:3)
据我所知,MySQL并不支持FULL JOIN
所以在这种情况下,FULL
这个词意味着你的第一个表feesmaster
的 ALIAS 。因此,没有列feesmaster.PAIDAMOUNT
,而是FULL.PAIDAMOUNT
。您可以通过UNION LEFT JOIN and RIGHT JOIN
UPD:同样在你的情况下,FULL JOIN(以及LEFT / RIGHT JOIN' s)对于此查询没有任何意义,因为只有当expensemaster.date
时你的WHERE条件为TRUE feesmaster.datetime
不是NULL
。所以在这种情况下只有INNER JOIN
才有效。
答案 1 :(得分:0)
您的错误是一个未知列,这基本上意味着在feesmaster
表中没有PAIDAMOUNT
列(可能是拼写错误?)。