حسین شاهپوری
4 سال پیش توسط حسین شاهپوری مطرح شد
6 پاسخ

سوال در مورد query

سلام دوستان من در 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


ثبت پرسش جدید
محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@ho3in8520
سلام.
اول یک کوئری باید ایجاد کنید که به دنبال اون داده داخل data_master بگرده، بعد تعداد کل موارد رو برگردونه، اگر بزرگتر از 0 بود اون داده داخل اون رو برگردونه. در غیر این صورت یک کوئری دیگه می سازید تا بره داخل جدول دوم و دنبال داده بگرده.


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

باید از JOIN استفاده کنید و اطلاعات ۲ جدول رو ادغام کنید

JOIN ها انواع مختلفی دارند:

  • دستور INNER JOIN : خروجی دستور JOIN یا دستور INNER JOIN از بین سطرهایی انتخاب میشود که حداقل یک رابطه در هر دو جدول وجود داشته باشد.

  • دستور LEFT JOIN : خروجی دستور LEFT JOIN از از جدول سمت چپ انتخاب میشود، حتی اگر هیچ رابطه ای با جدول سمت راست نداشته باشد.

  • دستور RIGHT JOIN : خروجی دستور RIGHT JOIN از از جدول سمت راست انتخاب میشود، حتی اگر هیچ رابطه ای با جدول چپ نداشته باشد.

  • دستور FULL JOIN : خروجی دستور FULL JOIN از بین سطرهایی انتخاب میشود که یک رابطه در یکی از جداول بایستی وجود داشته باشد.

موفق باشید


حسین شاهپوری
تخصص : برنامه نویس
@ho3in8520 4 سال پیش مطرح شد
0

مهندس بیات فرمایش شما کاملا درسته الان هم من 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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

خوب اگر دارید از 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


حسین شاهپوری
تخصص : برنامه نویس
@ho3in8520 4 سال پیش مطرح شد
0

سپاس از شما @ali.bayat


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

موفق باشید


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام