תעדוף 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.
איך עושים דבר כזה? תודה.
אז ככה, טבלת מוצרים מכילה את העמודות האלו:
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.
איך עושים דבר כזה? תודה.