سلام دوستان من در Sql دو تیبل به اسم data_default_master و data_master دارم فیلد هاشونم دقیقا مثل هم هستن میخواستم کوئری بنویسم اول بیاد چک کنه ببینه یوزر داخل data_master رکوردی ثبت کرده یا ن اگه ثبت کرده اونو نمایش بده و اگر ثبت نشده از داخل data_default_master دیتارو برگردونه فقط دوستان یک رکورد نمیخوام برگرده چون تعداد رکورد ها داینامیک هست ممکنه برای یک یوزر 10 رکورد باشه و یک یوزر دیگه 20
مثال :
داخل data_default_master
ali
hossein
داخل data_master
ali
الان باید ali رو از تیبل data_master برگردونه و hossein رو از تیبلdata_default_master
ممنون میشم راهنمایی کنید
@hesammousavi
@hossein.r.1442
@ali.bayat
@mohsenbostan
@ho3in8520
سلام.
اول یک کوئری باید ایجاد کنید که به دنبال اون داده داخل data_master بگرده، بعد تعداد کل موارد رو برگردونه، اگر بزرگتر از 0 بود اون داده داخل اون رو برگردونه. در غیر این صورت یک کوئری دیگه می سازید تا بره داخل جدول دوم و دنبال داده بگرده.
باید از JOIN استفاده کنید و اطلاعات ۲ جدول رو ادغام کنید
JOIN ها انواع مختلفی دارند:
دستور INNER JOIN : خروجی دستور JOIN یا دستور INNER JOIN از بین سطرهایی انتخاب میشود که حداقل یک رابطه در هر دو جدول وجود داشته باشد.
دستور LEFT JOIN : خروجی دستور LEFT JOIN از از جدول سمت چپ انتخاب میشود، حتی اگر هیچ رابطه ای با جدول سمت راست نداشته باشد.
دستور RIGHT JOIN : خروجی دستور RIGHT JOIN از از جدول سمت راست انتخاب میشود، حتی اگر هیچ رابطه ای با جدول چپ نداشته باشد.
دستور FULL JOIN : خروجی دستور FULL JOIN از بین سطرهایی انتخاب میشود که یک رابطه در یکی از جداول بایستی وجود داشته باشد.
موفق باشید
مهندس بیات فرمایش شما کاملا درسته الان هم من join زدم و مقادیر دو جدول رو ادغام کردم فقط الان میخوام داخل کوئری بگم رکوردی ک داخل data_master هست رو برگردونه و همون رکوردو داخل تیبلdata_default_master دیگه برنگردونه چون الان هم از data_master و هم data_default_master رو برمیگردونه و اطلاعات یکی هستن دقیقا من میخوام فیلتر بزنم روی دو جدول همونجور ک گفتم نام فیلد های 2 تیبل دقیقا مثل هم هستن فیلتر کنم روی dt_name اگر این نام داخل data_master بود و داخلdata_default_master هم بود از data_master رو برگردون ولی اگه داخل data_master نبود و داخل data_default_master بود از data_default_master رو برگردونه امیدوارم متوجه توضیحم شده باشین
@ali.bayat
خوب اگر دارید از join استفاده میکنید، در این شرایط بهتره باقی کار رو در سمت سرور انجام بدید
میتونید تابع یا متدی برای این کار در نظر بگیرید مثلا fetch_results
با fetch_results ابتدا اطلاعات داخل جدول data_master رو بگیرید و فیلد هات رو مقدار دهی کن
در حین مقدار دهی برای فیلدها اگر مقدار فیلدی برابر با Null بود اون فیلد رو از data_default_master بگیر و جاش قرار بده
یه راه دیگه هم هست که ممکنه پرفرمنس بهتری داشته باشه.. داده های هر دو جدول رو بگیرید و خودتون چک کنید اگر فیلدی در master نبود از default بگیره
اگر هم اصرار دارید با کوئری اینکارو انجام بدید، سری به پیج زیر در استکاورفلو بزنید.. اطلاعات و مثال های کاملی در مورد گرفتن داده ها از چند جدول داده.. ممکنه مفید باشه:
https://stackoverflow.com/questions/12475850/sql-query-return-data-from-multiple-tables
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟