PDA

View Full Version : تلفیق سه جدول بدون تکرار



mr_delphi2005
دوشنبه 14 بهمن 1387, 12:50 عصر
با سلام
من سه تا جدول دارم که جدول اولي 20 فيلد داره که PK اون ID هست و نام اون PEOPLE هست و
دومي دوتا فيلد داره به نام هاي PEOPLE_ID و COM_NAME که تابلو هاي يک شخصو مشخص ميکنه
و PEOPLE_ID از نوع FK هست که PK جدول PEOPLE در اون ميخوره و جدول سوم هم سه تا فيلد با نامهاي PEOPLE_ID,PRODUCT_NAME,PRODUCT_COMPANY که مثل جدول دومي PEOPLE_ID اون FK هست .
ID جدول اولي 203 هست
و داده هاي جدول دوم ضمیمه اول
و داده هاي جدول سوم هست ضمیمه دوم
حالا ميخوام اونارو با هم تلفيق کنم اين دستورو مينويسم


SELECT people.id, people_company_tableau.com_name, people_product.product_name, people_product.product_company
FROM people inner JOIN
people_company_tableau ON people.id = people_company_tableau.people_id inner JOIN
people_product ON people.id = people_product.people_id
where people.id = 203


مشه ضمیمه سوم
حالا ميخام بشه مثل ضمیمه چهارم
چيکار با يد بکنم ؟؟؟؟؟؟؟:گريه::گريه::گريه:

حامد مصافی
دوشنبه 14 بهمن 1387, 13:15 عصر
اگر فیلد های تکراری کاملاً مشابه هستند از DISTINCT استفاده کنید. در غیر اینصورت خروجی را گروهبندی کنید.

mr_delphi2005
سه شنبه 15 بهمن 1387, 09:22 صبح
مشابه نیستند فقط id اونا با هم برابره
من سوالو ویرایش کردم
ممنون میشم بیشتر توضیح بدین

حامد مصافی
سه شنبه 15 بهمن 1387, 10:23 صبح
سلام
سناریوی شما خیلی برام مبهم بود. من منطق مورد درخواستی شما رو درک نکردم. هر رکورد 3 زیر رکورد در جدول دوم و 3 زیر رکورد در جدول سوم داره پس خروجی مورد نظر شما باید 9 رکورد داشته باشه. حالا چرا می خواهید تعدادی از این رکورد ها حذف شوند. دلیل خاصی داره؟

اما تا جایی که متوجه شدم جدول people_product زیر اطلاعات جدول people_company_tableau را نمایش می دهد لذا طبق برداشت من شما باید فیلد PEOPLE_ID از جدول people_product و همچنین رابطه اون با people.id رو حذف کرده و PRODUCT_COMPANY رو FK متناظر با people_company_tableau.COM_NAME قرار دهید.

mr_delphi2005
سه شنبه 15 بهمن 1387, 12:16 عصر
ببینید
PEOPLE_COMPANY_TABLEAU جدولی هست که تابلوهای یک شخص (203) را نگه میداره (تصویر اول)
PEOPLE_PRODUCT جدولی هست که محصولات یک شخص (203) را در خودش نگه میداره (تصویر دوم)
(توی این رکوردها PRODUCT و TABLEAU با هم برابر شده :متعجب: ولی همه جا با هم برابر نیست)
حالا وقتی JOIN میگیرم با هم ضرب میشن و نتیجه میشه تصویر سوم (که PRODUCT برای هر TABLEAU تکرار میشه)
من میخام PRODUCT تکرار نشه امکانش هست؟

jafari1
جمعه 16 اسفند 1387, 17:46 عصر
[QUOTE][اگر فیلد های تکراری کاملاً مشابه هستند از DISTINCT استفاده کنید. در غیر اینصورت خروجی را گروهبندی کنید/QUOTE]
با سلام
ببخشید من یک فایل دارم شامل یک کد و یک فیلد دیگر است فیلد کد در این بانک بارها تکرارشده ولی فیلد دوم مقدرارش چیز دیگری است حال چگونه میشود فیلد اول (کد) و فیلد دوم را بصورتی آورد که کد فقط یکبار بیاید
با گروپ هم دوبار میآورد