PDA

View Full Version : کوئری خواندن اطلاعات جدول با استفاده از جدول فرزند



pedram.11
سه شنبه 24 تیر 1393, 18:56 عصر
سلام
من یک جدول با نام A دارم که دارای دو ستون id و user هست
و یک جدول دیگه با نام B که دارای 4 ستون id و IP و DateTime و UserID هست.
در یک sp میخوام از جدول A یوزرهایی رو انتخاب کنم که UserID در جدول B وجود نداشته باشه و اگر وجود داشته باشه پارامتر @ip وجود نداشته باشه، اگر هم @ip وجود داشت از زمان DateTime مثلا 2 ساعت گذشته باشه.
در حقیقت مثل یک سیستم بلاک آیپی هست که اگه آیپی بلاک نشده باشه مقدار IP برابر پارامتر @ip در جدول B ثبت نشده و اگر قبلا بلاک شده بود و تا حالا 2 ساعت گذشته باشه اون آیپی از بلاک در میاد و user رو از جدول A نمایش میده.
من خودم کلی سعی کردم اما به مشکل بر میخورم. لطفا راهنمایی کنید
delete from B where IP=@ip AND DATEDIFF(HOUR,DateTime ,GETDATE())>2;

Select A.user
from A
Join B
on
not exists(Select * from B where B.UserID=A.id) OR
A.id=B.UserID AND
B.IP<>@ip;

مهرداد صفا
چهارشنبه 25 تیر 1393, 18:24 عصر
سلام.
شبیه به این عمل کنید:


select a1.user from A a1
where not exists(select * from b where b.UserID=a1.ID)
union
select a2.User from a a2
join b
on a2.ID=b.userID
where b.IP='' or b.time >myTime