2016-05-14 8 views
0

Ich habe zu Tabellen;Abfrage ignoriert eine Bedingung in der "Where" -Klausel mit Zeitdimension

Tabelle A mit den Spalten "id", "u_time" (vom Typ datetime), "time_id" (vom Typ int). Tabelle B (die als eine Zeitdimension erstellt wurde), die alle möglichen Daten zwischen 2000-2010 enthält, bis auf die Stunde (also für jedes Datum gibt es 24 Zeilen). Table B

Ich versuche Tabelle A zu aktualisieren, um die richtige TIME_ID für jede ID mit der folgenden Abfrage zu haben:

UPDATE A, B 
SET A.time_id = B.time_id 
WHERE DATE(A.u_time) = B.date 
AND HOUR(A.u_time)=B.hour; 

ignoriert jedoch die Abfrage den STUNDE Zustand, und setzt alle Werte in A. TIME_ID zum TIME_ID mit dem richtigen Datum, aber mit Stunde 0. Query Result

Wie kann ich die Abfrage nicht die verschiedenen Stunden ignorieren?

+0

Sie sind nur die 'time_id' nicht die Stunde, Tag aktualisieren, usw. Ist das, was Sie erwarten? – GavinCattell

Antwort

0

ich glaube, Sie einen inneren

beitreten verwenden könnte
UPDATE A 
Inner join B ON (DATE(A.u_time) = B.date AND HOUR(A.u_time)=B.hour) 
SET A.time_id = B.time_id