PDA

View Full Version : join کردن دو جدول



ahad123
دوشنبه 08 مهر 1392, 11:24 صبح
با سلام
دو تا جدول دارم میخوام اسامی افرادی که در جدول اول هست ولی در جدول دوم نیست را برگدانم join را چجوری باید بنویسم

veniz2008
دوشنبه 08 مهر 1392, 11:53 صبح
سلام.
نیازی به join نیست.

select * from Table_1 where Table_1ID NOT IN(select Table_2ID From Table_2)

ahad123
دوشنبه 08 مهر 1392, 11:59 صبح
با دستور بالا تعداد رکورد 0 برمیگردونه

veniz2008
دوشنبه 08 مهر 1392, 12:01 عصر
فیلد مشترک بین دو جدول چی هست؟
اگر میتونید برای اینکه سریعتر به جواب برسید از هر جدول یه عکس بذارید.

ahad123
دوشنبه 08 مهر 1392, 12:05 عصر
دستور رو اینجوری نوشتم
select COUNT(*) from Roles where IRC NOT IN
(select IRC from Role)

فیلد مشترک IRC

مهرداد صفا
دوشنبه 08 مهر 1392, 12:10 عصر
با سلام.

select name from table1 where not exists(select * from table2 where table2.name=table1.name)

ahad123
دوشنبه 08 مهر 1392, 12:19 عصر
ممنون ولی با join چجوری میشه

veniz2008
دوشنبه 08 مهر 1392, 12:22 عصر
دستور رو اینجوری نوشتم
select COUNT(*) from Roles where IRC NOT IN
(select IRC from Role)

فیلد مشترک IRC
برای شرکت دادن مقادیر NULL در هنگام مقایسه کردن کد زیر رو قبل از کوئری قرار بدید :

set ansi_nulls off
کوئری هم به اینصورت خواهد بود :

select * from Roles where IRC NOT IN(select IRC from Role)
اگر فقط فیلد خاصی رو میخواید به جای * نام فیلدت رو ذکر کن.
کوئری درست هست. مقادیر داخل جدول رو چک کنید.
روش آقای صفا هم درست هست.

ahad123
دوشنبه 08 مهر 1392, 12:25 عصر
بازم ممنون ولی باید با join بنویسممممممممممممممممم



با join صفر برمیگردونه

ahad123
دوشنبه 08 مهر 1392, 12:33 عصر
با join صفر برمیگردونه

veniz2008
دوشنبه 08 مهر 1392, 12:37 عصر
پست 4 گفتم که جداولتون رو یه عکس ازشون بگیرید و بزارید (داده های داخلشون).
تا الان 2 کوئری مختلف در اختیار شما قرار گرفته که هر 2 کوئری کاملا صحیح هستن.
مشکل از داده های شماست.
عکس رو بزارید تا راهنمایی کنم.

ahad123
دوشنبه 08 مهر 1392, 12:47 عصر
کوئری زیر درست جواب میده

select name from table1 where not exists(select * from table2 where table2.name=table1.name)

فقط میخوام با join بنویسم
برا عکس شرمنده ام ............

behzadkhatari
دوشنبه 08 مهر 1392, 12:51 عصر
Select T1.* from TABLE1 T1 LEFT JOIN TABLE2 T2 ON T1.ID= T2.T1ID

ahad123
دوشنبه 08 مهر 1392, 12:59 عصر
ای کوئری رکوردهایی که در جدول دوم هست هم میاره

من فقط رکوردهایی رو میخوام که فقط در جدول اول هست در جدول دوم نیست

ahad123
دوشنبه 08 مهر 1392, 13:12 عصر
یه عکس گذاشتم

مهرداد صفا
دوشنبه 08 مهر 1392, 14:24 عصر
select table1.name from table1 left outer join table2 on table1.name=table2.name where table2.name is null
البته دو کوئری قبلی از نظر سرعت سریع تر هستند.