תעדוף Group By

WeBuster

New member
תעדוף Group By

אז ככה, טבלת מוצרים מכילה את העמודות האלו:
product_id, category_id, color, size

בנוסף, כל מוצר שייך לקומבו (אוסף מוצרים משולבים) ע"י טבלה שנראית ככה:
product_id, combo_id

-----

השאילתה שאני עשיתי:

SELECT tbl_products.*, tbl_combos.*
FROM tbl_products
INNER JOIN tbl_products.product_id = tbl_combos.product_id
GROUP BY tbl_products.category_id,tbl_products.color,tbl_combos.combo_id


הבעיה:
- לא לכל מוצר יש קומבו. ישנם מוצרים שאין להם שום רשומה בטבלת tbl_combos.
- ישנם מוצרים שהם בדיוק אותו דבר מלבד עמודת ה-size (מידה שונה).

התוצאה שאני רוצה לקבל היא שגם אם אני עשיתי group by על tbl_combos.combo_id, אני עדיין לא רוצה לקבל מוצרים אם ה-category_id וה-color שלהם כבר נשלף (סוג של DISTINCT אני מאמין),
גם אם לאחד מהם יש combo_id ולאחד אין.

זאת אומרת שמתוך 2 הרשומות הללו:

product_id | category_id | color | size
11112 | 2222 | yellow | large (---> עם combo_id)
11113 | 2222 | yellow | small


אני אקבל רק את הרשומה עם ה-combo_id, ז"א את product_id מספר 11112, על-אף שעשיתי group by על combo_id.

איך עושים דבר כזה? תודה.
 

גרי רשף

New member
השתמש ב-Left Join

אם הבנתי נכון:
SELECT ...
FROM tbl_products
Left JOIN tbl_combos on tbl_products.product_id = tbl_combos.product_id
GROUP BY ...
 
למעלה