0

こんにちは、mysql クエリのヘルプが必要です。何があってもTABLE Aのすべてのデータを表示したいと同時に、TABLE Bが現在の日付を通過したかどうかを示し、日付が過ぎてもすべてのTABLE Aの結果を表示したかった.

TABLE A
AID
NAME
ADDRESS

TABLE B
BID
DETAIL
DATE
AID

SELECT a.*, b.bid
FROM TABLE A
LEFT JOIN TABLE B
ON A.AID = B.AID
WHERE date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) //how to play with this?

私を助けてください。

4

2 に答える 2

3
SELECT v.*, b.bid
FROM TABLE A
LEFT JOIN TABLE B
ON A.AID = B.AID AND B.date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
于 2012-04-13T20:30:12.370 に答える
0

またLEFT JOIN、すべての行に対して複数の行を返すこともできます。質問には、基準に一致するA複数の行が存在できないとは書かれていません。それを避けるにBは、GROUP BY(または使用する)必要があります。DISTINCT何かのようなもの:

SELECT a.*, max(b.date) AS last_date
FROM   a
LEFT   JOIN b ON a.aid = b.aid AND b.date >= curdate()
GROUP  BY a.aid
于 2012-04-13T23:42:58.360 に答える