ورود

View Full Version : نوشتن یک کوئری



M.YasPro
پنج شنبه 20 مرداد 1390, 14:10 عصر
سلام
وقتتون بخیر
جدولهای من :
73664
من میخوام کوئری من به اینصورت عمل کنه که تمام person هایی که تو جدول enter فیلد card شون در تاریخ مورد نظر (فیلد date_) ثبت نشده رو استخراج کنه
خلاصه کار این میشه که به ازای هر بار ورود یه نفر توی جدول enter یه رکورد ثبت میشه حالا میخوام کسانی که توی تاریخ مشخص وارد نشدند رو استخراج کنم .
این کوئری جواب نمیده

SELECT person.*,enter.*

FROM person left JOIN enter ON person.Card = enter.card

WHERE ( ((enter.card) Is Null) )


ممنون از توجهتون .

Galawij
پنج شنبه 20 مرداد 1390, 14:59 عصر
Select P.*, E.* From Person As P,Enetr As E Where P.Code Not IN(Select E.Code From Enter As E) AND E.Date=@YourDate

M.YasPro
شنبه 22 مرداد 1390, 08:58 صبح
سلام
ممنون از جوابتون
کوئری شما جواب نمیده
من به این صورت نوشتم
SELECT DISTINCT Person.*
FROM Person, Enter
WHERE Person.card Not IN
(Select Enter.Card From Enter where Enter.date_="1390/05/22");
جالبه وقتی Not هست هیچ رکوردی استخراج نمیشه که نباید اینجوری باشه و اشتباه هست اما وقتی Not نیست همون چیزی که باید استخراج شه میشه !!
من دیتابیسم اکسس هست آیا مشکل از engine اکسس هست ؟

Galawij
شنبه 22 مرداد 1390, 09:38 صبح
من جداول را به این صورت پیاده کردم:
73741
با ساختار بالا Query مورد نظر به این صورت در میاد:
SELECT dbo.TbPersonnel.IdPersonnel, dbo.TbPersonnel.Name, dbo.TbPersonnel.Card, dbo.TbEnter.Date, dbo.TbEnter.IdEnter
FROM dbo.TbEnter RIGHT OUTER JOIN
dbo.TbPersonnel ON dbo.TbEnter.Id_Personnel = dbo.TbPersonnel.IdPersonnel
WHERE (dbo.TbPersonnel.IdPersonnel NOT IN
(SELECT Id_Personnel
FROM dbo.TbEnter AS TbEnter_1
WHERE (Date = '1390/05/06')))

M.YasPro
شنبه 22 مرداد 1390, 11:20 صبح
دقیقا درست شد .
ممنون از پیگیری شما