שלח תשובה

זירת השאלות

270
צפיות
3
תשובות

שאלה ב SQL

,‏ 29 ביוני, 2004

אז קצת רקע :), יש לי 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 תשובות

  1. ניר טייב הגיב:

    אתה צריך להשתמש ב-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

שלח תשובה