ورود

View Full Version : ترکیب دو SELECT با هم و نمایش آنها بصورت یکی



RED-C0DE
پنج شنبه 14 اردیبهشت 1385, 11:56 صبح
سلام...
من 2 تا جدول (Orders , Customers ) دارم که توی Orders اطلاعات فروش قرار می گیره و بجای مشخصات کامل مشتری, ID اون شخص که قبلا در Customers ثبت شده قرار می گیره...(تا اینجا که مشکلی نیست) اما بعضی وقتها یک مشتری پیدا می شه که هنوز در جدول Customers ثبت نشده و نباید ثبت بشه به هر دلیلی. و بنابراین در Orders بجای ID, مشخصات کامل اون قرار می گیره..حالا من که بخوام جدول Orders رو نمایش بدم همراه با مشخصات هر مشتری می رم و با ID اون در جدول Customers کار می کنم اما اونایی که هنوز در Customers ثبت نشدند رو چه جوری باید نمایش بدم؟؟؟
چون که فقط لیست سفارشهایی که یک ID در جدول Customers دارن رو نمایش می ده...
خیلی خیلی ممنون می شم کمکم کنید...و اصلا بگین که این کار من درست هست یا خیر؟؟؟

خلاصه سوال من اینه که چه جوری می تونم حاصل 2 تا SELECT رو پشت سر هم نمایش بدم یعنی جایی که یک شرط برقراره همراه با جایی که اون شرط برقرار نیست نمایش داده بشن پشت سر هم.؟؟؟

reza_rad
پنج شنبه 14 اردیبهشت 1385, 12:08 عصر
من پیشنهاد می کنم که مشخصات تمام مشتریان رو چه کسانی که باید ذخیره بشن و چه کسانی که نباید بشن رو توی جدول customer ذخیره کنید ولی برای اینکه بتونید از هم تشخیصشون بدید یک فیلد flag بذارید

در مورد حاصل دو تا select پشت سر هم باید بگم که اگه اینکار رو بکنید دیگه دو تا select لازم نیست
اگه هم یه وقت خواستید دوتایی کار کنید با union به راحتی میشه.

mzjahromi
پنج شنبه 14 اردیبهشت 1385, 12:11 عصر
ببینید این مشکلتون رو حل میکنه
union query (http://www.barnamenevis.org/forum/showthread.php?t=43959&highlight=Union)
اینم ببینید بد نیست
سوال در مورد selec (http://www.barnamenevis.org/forum/showthread.php?t=42818&highlight=Union)

RED-C0DE
پنج شنبه 14 اردیبهشت 1385, 12:19 عصر
خیلی ممنون از راهنمایهای شما دوستان عزیز...منظورتون رو متوجه شدم و فکر کنم به اون چیزی که می خوام رسیدم...باز اگه به مشکلی برخوردم حتما اینجا مطرح می کنم..
باز هم از شما دو دوست عزیز ممنونم..

AminSobati
پنج شنبه 14 اردیبهشت 1385, 14:07 عصر
چرا از OUTER JOIN استفاده نمیکنید؟

RED-C0DE
جمعه 15 اردیبهشت 1385, 17:20 عصر
در مورد Outer Join بیشتر توضیح بدین...
البته من به جوابم رسیدم با Union

AminSobati
جمعه 15 اردیبهشت 1385, 18:37 عصر
نمایش همه مشتریها حتی اونهایی که سفارش نداشته اند:


SELECT C.*, O.* FROM Customers c LEFT OUTER JOIN Orders O
ON C.CustomerID=O.CustomerID


نمایش همه سفارشها حتی اونهایی که مشتریشون مشخص نیست(به جای CustomerID مقدار NULL دارند)


SELECT C.*, O.* FROM Customers c RIGHT OUTER JOIN Orders O
ON C.CustomerID=O.CustomerID