צפיות
תשובות
שאלה ב SQL
אז קצת רקע :), יש לי 2 טבלאות במסד אחת של פריטים(items) והשנייה של תמונות(pictures) בטבלה של הפריטים יש את העמודות הבאות:
itemId
itemName
itemBrand
itemOrder
וכו'
בטבלת התמונות יש
picId
picLink
itemId
picOrder
לכל פריט יכולות להיות כמה תמונות, itemId ב pictures הוא זה שמקשר בין התמונות לפריט אבל ה picOrder לכל itemId שב pictures הוא יחודי, כלומר אם יש כמה תמונות שה itemId שלהם זהה ה picOrder שלהם שונה, מקווה שזה היה ברור 🙂
הצלחתי כמובן להוציא את הפריט עם התמונה הנכונה והראשונה בסדר(picOrder=0)
עם המשפט הבא:
SELECT items.itemId, itemName, itemBrand, itemOrder, picLink
FROM items, pictures
WHERE itemBrand='" & request("itemBrand") & "'
AND pictures.itemId=items.ItemId
AND pictures.picOrder=0
ORDER BY itemOrder
הבעיה היא שאני מקבל רק את הפריטים שיש להם תמונה, השאלה שלי היא איך אני
מקבל את כל הפריטים בלי קשר לאם יש להם תמונה או לא, ולאלה שיש אז גם את הערכים מטבלאת ה pictures..
אני מקווה שהסברתי את עצמי נכון..
3 תשובות
אתה צריך להשתמש ב-OUTER JOIN
כנס לקישור ותלמד קצת על OUTER JOIN
נראה לי זה מקרה של LEFT JOIN (סוג של OUTER JOIN)
SELECT items.itemId, itemName, itemBrand, itemOrder, picLink
FROM items LEFT JOIN pictures ON pictures.itemId=items.ItemId
WHERE itemBrand='" & request("itemBrand") & "'
AND pictures.picOrder=0
ORDER BY itemOrder
הקישור
כן זה בדיוק זה תודה