PDA

View Full Version : اشكال در left join



lm48390
شنبه 23 بهمن 1389, 13:06 عصر
يا سلام و خسته نباشيد
من دو جدول دارم. مي خواهم بر اساس فيلدlist_id تعداد ركوردهايي كه در جدول t2 ، فيلد List_id انها با فيلد id جدول t1 برابر است را نمايش دهد وبراي ركوردهايي از جدول t1 كه در جدول t2 وجود ندارد صفر نمايش دهد. دستور زير را نوشتم. يا تمام ركوردها را نمايش مي دهد يا اطلاعات اشتباه را نمايش ميدهد(گويي شرط اعمال نمي شود)

select t1.id,t1.title
, count(t2.list_id) as count
from t1
left outer
join t2
on t1.id = t2.list_id
and (
t1.standard_id=1361
)
group
by t1.id

m_karimi
یک شنبه 24 بهمن 1389, 02:55 صبح
سلام
دستورتون درسته.
مگه نمی خواهید رکوردهایی که شرط ((برابر بودن id و list_id ) و (standard_id=1361)) در آنها وجود دارد رو نشون بده به اضافه تمام رکوردهایی که این شرط صدق نمیکنه ولی در جدول t1 هستن؟ کویری شما همین کار رو میکنه.

lm48390
یک شنبه 24 بهمن 1389, 07:22 صبح
با سلام
m_karimi عزيز از جوابتان تشكر ميكنم. من ميخواهم ركوردهايي از جدول t1 كه standard_id=1361 ، تعداد آنها را در جدول t2 پيدا كنم و اگر ركودي با شرط standard_id=1361 در جدول t1 بود كه در جدول t2‌موجود نبود. صفر را نمايش دهد در حالي كه دستور فوق تمام استاندارها را براي من مي آورد و گويي شرط standard_id=1361 اعمال نمي شود.

m_karimi
یک شنبه 24 بهمن 1389, 09:46 صبح
سلام
شما برای این کار باید به جای and از where استفاده کنید.

select t1.id,t1.title
, count(t2.list_id) as count
from t1 left outer join t2
on t1.id = t2.list_id
where
t1.standard_id=1361
group
by t1.id