2016-03-24 17 views
-2

Bu sorguyu bir tablodan diğerine tablodaki aşağıdaki koşullarla birlikte bir tablodan diğerine eklemek için yazdım CHECKTIME >= 12Att_process tablosuna eklenmelidir, Bu sorgu SQL Server'da başarıyla yürütülüyor ancak veri tablosuna eklemek değil, ama tabloda da saat> 12 veriSQL INSERT INTO SELECT deyimiyle ve INNER JOIN ile yan tümce

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

herhangi biri bu gerçekten takdir bana yardımcı olabilir

+0

mı? –

+1

SELECT parçasını yalnız yürütürseniz (ekleme yapmadan), sonuç beklendiği gibi mi olur? – jarlh

+0

Yukarıdaki ifadede, yukarıdaki kişilerde olduğu gibi yanlış bir şey yoktur, bunun birleşim ile ilgili olduğundan şüpheliyim. – Dane

cevap

1

Daha önce Att_process tablonuzda veri var mı?

Katılmadığınız tabloya eklemeye çalışırken, aynı zamanda Att_process tablosunun User_ID ile birleşiyorsunuz. Peki nasıl birleşim veri üretecek?

Lütfen Att_process tablosunu ve CHECKINOUT tablosundaki ilişkisini bize bildirin.

muhtemelen ne gerekebilir iç Att_process ile katıldıktan sonra u sonucunu kontrol ettin

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

Attn_process tablo üç alanları USERID, checkin_time, checkout_time var bu yüzden 12'den fazla zaman değerinin olup olmadığını kontrol etmem gerekiyor, bu değerler checkout_time dosyasında Att_process tablosuna eklenmeli, USERID ve CHECKTIME CHECKINOUT tablosunun birincil anahtarıdır –

+0

Bu sorguyu çalıştırırsam Attn_process tablosunda –

+0

kayıt yok veri gösterecektir DATEPART'ın (HOUR, C) bulunduğu CHECKINOUT konumundan SELECT * HECKTIME)> = 12 –