Нужна помощь с JOIN

В корзине магазина пытаюсь вывести характеристику товара

#1 4 февраля 2015 в 10:08
Есть задача: В корзине рядом с заказанным товаром (Instantshop) выводить характеристику товара (одну из них)


Примеры таблиц для запроса:


Таблица заказов — cms_shop_cart
  1.  
  2. id | session_id | item_id | var_art_no | qty | pubdate | chars | chars_hash
  3. ---+----------------------+---------+------------+-----+------------+-------+------------
  4. 1 | eeb39d6c6c6836c75a73 | 12 | 001-4 | 1 | 2015-02-02 | NULL | NULL
  5. 4 | 78bfef9afbea7b2910fb | 13 | 002-4 | 1 | 2015-02-02 | NULL | NULL
  6.  

Таблица товаров — cms_shop_items
  1.  
  2. id | category_id | art_no | title | price |is_digital | seolink | qty | filename | filename_orig
  3. ---+-------------+--------+-------+-------+-----------+---------+-----+-------------------------
  4. 12 | 27 | 001 | Чай А | 100 | 0 | dir1 | 0 |
  5. 13 | 27 | 002 | Чай Б | 150 | 0 | dir1 | 0 |
  6.  

Таблица характеристик — cms_shop_chars_val
  1.  
  2. item_id | char_id | val
  3. ----------------------------
  4. 12 | 28 | 100
  5. 12 | 29 | Черный
  6. 12 | 30 | Карт
  7. 13 | 28 | 100
  8. 13 | 29 | Зеленый
  9. 13 | 30 | Карт
  10.  



Сейчас выборка идет из двух таблиц и запрос выгдялит так
  1.  
  2. $base_sql = "SELECT items.title as title,
  3. items.price as price,
  4. items.art_no as art_no,
  5. items.seolink as seolink,
  6. items.qty as qty,
  7. cart.qty as cart_qty,
  8. cart.item_id as item_id,
  9. cart.id as cart_id,
  10. cart.chars as chars,
  11. items.is_digital as is_digital,
  12. items.filename as filename_item,
  13. items.filename_orig as filename_orig,
  14. items.category_id as category_id
  15.  
  16. FROM cms_shop_cart cart, cms_shop_items items,
  17.  
  18. WHERE cart.session_id = '{$session_id}' AND
  19. (cart.var_art_no = '' OR cart.var_art_no = '0') AND
  20. cart.item_id = items.id";
  21.  
  22.  

Пытаюсь прилипить еще одну таблицу чтобы выводились и характеристики
  1.  
  2. $base_sql = "SELECT items.title as title,
  3. items.price as price,
  4. items.art_no as art_no,
  5. items.seolink as seolink,
  6. items.qty as qty,
  7. cart.qty as cart_qty,
  8. cart.item_id as item_id,
  9. cart.id as cart_id,
  10. cart.chars as chars,
  11. items.is_digital as is_digital,
  12. items.filename as filename_item,
  13. items.filename_orig as filename_orig,
  14. items.category_id as category_id,
  15. val.val as value
  16.  
  17. FROM cms_shop_cart cart, cms_shop_items items
  18. LEFT JOIN cms_shop_chars_val val ON val.char_id = 29 AND val.item_id = cart.id
  19.  
  20. WHERE cart.session_id = '{$session_id}' AND
  21. (cart.var_art_no = '' OR cart.var_art_no = '0') AND
  22. cart.item_id = items.id";
  23.  
Но что-то явно делаю не так и ответ возвращает пустой (

Подскажите что делаю не так? Где в запросе ошибка? cry
#2 4 февраля 2015 в 10:16
глубоко не вникал, но вроде как вместо
  1. val.item_id = cart.id
должно быть
  1. val.item_id = cart.item_id
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.