سلام دوستان.پایگاه داده ای دارم که دارای دو جدول S1و S2هستش.هر رکوردی که در S1وجود داره الزاما در S2نیز باید وجود داشته باشه.بعضی از رکوردها ممکنه در جدولS2حذف شوند.چطور میتونم رکورد هایی رو که حذف شدن یعنی در S1هستن ولی در S2نیستن رو پیدا کنم؟تشکر
باید در شرط از IN استفاده کنید
کد:
select * from s1 where id not in(select id from s2)
ا سلام.دو جدول s1وs2داریم که ساختارشون شبیه همه و 4کلیدی هستند که عبارتند از id1-id2-id3-id4.مشکل من اینجاست که هر چه که در جدول 1هست در جدول 2هم باید باشه .و مشکل دوم اینکه 4کلید دارن.حالا بعضی موقع ها بعضی از رکورد های جدول 2 ممکنه حذف بشن.چطور باید رکورد هایی رو پیدا کنم که توی s1هستن ولی توی s2نیستن؟ممنون از تمام راهنمایی هاتون
چه چیزهایی در s1 هست که باید در s2 باشه؟
این 4 تا کلید تو هر 2 تا جدول ثابتن؟یعنی هو جدول s1 و هم جدول s2 این 4 تا کلید رو دارن؟
سلام .
جدول s1شامل رکوردهایی است که باید در s2هم همان رکوردها باشد.ولی ممکن است تعداد رکوردهای s2بیشتر باشد.
بله عینا یکی هستن .کلید های دو جدول یکی هستن.و در کل ساختار دوجدول کاملا یکسان است فقط در رکوردها تفاوت دارند.
خواهش میکنم راهنماییم کنه.ممنونم.
خب همون کوئری بالا رو یه کم عوض میکردین
این کوئری رکوردهایی رو از جدول s2 نشون میده که در s1 نیست به شرطی که مقدار id در هر 2 جدول نظیر به نظیر باشن
کد:
select * from s2 where id not in(select id from s1)
اگه نظیر به نظیر نیستن اسامی فیلدهای هر 2 جدول رو بنویسین تا بشه بهتر راهنمایی کرد
(چون select داخلی در این حالت باید به صورت join در بیاد)
منظورتون از نظیر به نظیر چیه؟میشه بیشتر توضیح بدین.
ببینید هر فیلدی که در s1هست در s2 هم هست و برعکس و ساختار دو جدول عینا مثل همه مثلا جدول s1داری 10فیلد l1-l2-l3...............l10هستش و جدول s2نیز دقیقا همینجوره فقط محتویات جدول ها با هم فرق دارن.
(۰۶-آذر-۱۳۹۲, ۱۷:۳۲:۳۴)taksa2012 نوشته است: [ -> ]منظورتون از نظیر به نظیر چیه؟میشه بیشتر توضیح بدین.
ببینید هر فیلدی که در s1هست در s2 هم هست و برعکس و ساختار دو جدول عینا مثل همه مثلا جدول s1داری 10فیلد l1-l2-l3...............l10هستش و جدول s2نیز دقیقا همینجوره فقط محتویات جدول ها با هم فرق دارن.
به نظر من شما اول برید بحث اجتماع و اشتراک را در ریاضی (فکر کنم اول دبیرستان)بخونید بعد بهتر متوجه میشید جریان چیه!
موفق باشید
دوست عزیز مثل اینکه دقیقا منظورم رو متوجه نمیشین من گفتم دو جدول دقیقا همه چیزشون یکیه ساختارشون محتویاتشون و......و جدول s2در واقع یک کپی از جدول s1 هست . میخوام اگه کاربر شیطنت کرد و رکوردی از از s1رو حذف کرد(چون سوابقی هستند که نباید حذف شوند) با رکورد های موجود در s2بتوان تشخیص داد که چه رکوردی از s1 حذف شده همین.ضمنا نظیر به نظیر چه ربطی به این موضوع داره من دارم میگم دوتا جدول در واقع یکی هستن کپی برابر اصل ممنون میشم راهنمایی بفرمایید.
ببینید برای سلکت ساده به این شکل عمل میکنیم!
کد:
select a ftom tbl where s=1
این برای زمانی هست که ما یک مقدار را قرار هست مورد برسی قرار بدیم!
ولی الان شما میخواهید مقادیر a را نمایش دهد که در جدول دیگر وجود ندارد!باید بجای مقدار یک که در مثال قبل گفته شد مجموعه از مقادیر بهش بدیم که باید به شکل زیر عمل کنیم
کد:
select a from tbl1 where s not in(select s from tbl2)
حالا نتیجه مقادیری هست در جدول دوم وجود ندارد و الان میتوانید متوجه بشید که کدام موارد حذف شده :)
موفق باشید