2016-03-24 4 views
-2

Ich schrieb diese Abfrage für das Einfügen von Daten aus einer Tabelle in eine andere mit der folgenden Bedingung Stunden auf Tabelle Feld CHECKTIME >= 12 sollte in Att_process Tabelle eingefügt werden, Diese Abfrage erfolgreich auf SQL Server ausgeführt aber die Daten einfügen nicht auf die Tabelle in, aber Stunden> 12 Daten auch in der TabelleSQL INSERT INTO mit SELECT-Anweisung und INNER JOIN mit WHERE-Klausel

INSERT INTO Att_process(USERID,checkout_time) 
    SELECT 
     CHECKINOUT.USERID, CHECKINOUT.CHECKTIME 
    FROM 
     CHECKINOUT 
    INNER JOIN 
     Att_process ON CHECKINOUT.USERID = Att_process.USERID 
    WHERE 
     DATEPART(HOUR, CHECKTIME) >= 12; 

enter image description here

Kann jemand mir helfen, auf diese wirklich zu schätzen

+0

Haben u überprüfen Sie das Ergebnis nach Innen mit Att_process anschließen? –

+1

Wenn Sie den SELECT-Teil alleine ausführen (ohne Einfügen), ist das Ergebnis wie erwartet? – jarlh

+0

Es ist nichts falsch mit der Where-Klausel, wie oben erwähnt habe ich vermute, dass es mit der Join zu tun hat. – Dane

Antwort

1

Gibt es bereits Daten in Ihrer Att_process-Tabelle?

Sie treten gleichzeitig mit der User_ID der Att_process-Tabelle ein und versuchen, sie in die Tabelle einzufügen, der Sie beitreten. Wie wird Join Daten produzieren?

Bitte teilen Sie uns die Tabelle Att_process und ihre Beziehung mit der Tabelle CHECKINOUT mit.

wahrscheinlich das, was Sie benötigen ist

INSERT INTO Att_process(USERID,checkout_time) 
    (SELECT 
     CHECKINOUT.USERID, CHECKINOUT.CHECKTIME 
    FROM 
     CHECKINOUT   
    WHERE 
     DATEPART(HOUR, CHECKTIME) >= 12; 
    ) 
+0

Attn_process Tabelle haben drei Felder USERID, checkin_time, checkout_time so muss ich überprüfen, ob Zeitwert mehr als 12, diese Werte in Att_process Tabelle abgelegt checkout_time, USERID und CHECKTIME ist der Primärschlüssel von CHECKINOUT Tabelle –

+0

Es gibt keinen Datensatz auf Attn_process Tabelle –

+0

Wenn ich diese Abfrage ausführen wird es Daten zeigt SELECT * von CHECKINOUT, wo DATEPART (STUNDE, C HECKTIME)> = 12 –