Join-Abfrage gibt keine Datensätze für CURDATE zurück - mysql - Program QA

Join-Abfrage gibt keine Datensätze für CURDATE zurück

2020-06-30 mysql

Während der Ausführung der folgenden JOIN-Abfrage kann ich die Daten nicht abrufen. Es ist tatsächlich 1 Datensatz mit dem updatedAt Datum = 2020-06-30 verfügbar (siehe Screenshot).

Ich möchte eine JOIN-Abfrage erstellen, um Daten für createdAt or updatedAt date = CURDATE () anzuzeigen.

Die folgende Abfrage gibt keine Datensätze zurück. Siehe Screenshot:

Geben Sie hier die Bildbeschreibung ein

SELECT user.id, user.photo, user.position, availability.dailystatus 
FROM user  
join availability  
ON user.id = availability.id where (SELECT DATE((availability.createdAt) or (availability.updatedAt))) = CURDATE();

Geben Sie hier die Bildbeschreibung ein

Answers

Der OR Operator gibt einen Booleschen datetime zurück, entweder 0 oder 1 , keine datetime . Es macht also wenig Sinn, dies als Argument für DATE() .

Wenn Sie testen möchten, ob eines der CURDATE() gleich CURDATE() , müssen Sie separate Vergleiche durchführen und diese mit OR kombinieren.

Außerdem sollten Sie dies nicht in einer Unterabfrage tun, sondern die ausgewählte Zeile testen.

SELECT user.id, user.photo, user.position, availability.dailystatus 
FROM user  
join availability  
ON user.id = availability.id
WHERE DATE(availability.createdAt) = CURDATE()
OR DATE(availability.updatedAt) = CURDATE()

Sollten Sie nicht Tabellen auf user.id = availability.user_id ? Es scheint, als würden Sie sich in der falschen Spalte anschließen

Related