1

このようなデータを返すクエリがあります

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` )

内側を完全に置き換えて、テーブルの1つに一致するものがあるときに戻り行を取得できるようにすると、エラーが発生します

#1054-'フィールドリスト'の不明な列'feesmaster.PAIDAMOUNT'

phpmyadminを使用しています。

4

2 に答える 2

3

私が知っているように、MySQLはサポートしていないので、この場合FULL JOINの単語は最初のテーブルのエイリアスを意味します。したがって、列はありませんが。UNIONLEFTJOINとRIGHTJOINでFULLJOINを実装できますFULLfeesmasterfeesmaster.PAIDAMOUNTFULL.PAIDAMOUNT

UPD:また、あなたの場合、FULL JOIN(およびLEFT / RIGHT JOINも)は、WHERE条件がTRUEの場合にのみ、そうでない場合にのみ、このクエリに意味がexpensemaster.dateありfeesmaster.datetimeませんNULL。したがってINNER JOIN、この場合にのみ機能します。

于 2013-01-15T08:44:54.250 に答える
0

エラーは不明な列です。これは基本的に、feesmasterテーブルにPAIDAMOUNT列がないことを意味します(おそらくタイプミス?)。

于 2013-01-15T08:41:47.483 に答える