2012-04-13 3 views
0

Hallo, ich brauche etwas Hilfe für die MySQL-Abfrage. Ich wollte alle Daten von TABELLE A anzeigen, egal was und gleichzeitig zeigt, ob TABELLE B das aktuelle Datum bestanden hat oder nicht, selbst wenn das Datum abgelaufen ist, wollte ich immer noch alle TABELLE A Ergebnisse anzeigen.Wie alle Ergebnisse von einer Tabelle angezeigt werden und prüfen Bedingung

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? 

Bitte helfen Sie mir. nichts in Frage sagt, dass es nicht sein kann, mehrere Zeilen in B, die den Kriterien entsprechen -

Antwort

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) 
+0

wow nie daran gedacht. Vielen Dank !!!! – Eric

0

A LEFT JOIN können auch mehrere Zeilen für jede Zeile in A zurückzukehren. Sie müssten GROUP BY (oder DISTINCT) verwenden, um dies zu vermeiden. Etwas wie:

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 
+0

notiert, vielen Dank – Eric

Verwandte Themen