2014-11-16 6 views
1

У меня есть 2 разных таблиц в базе данных MySQL, которые структурированы так:объединение таблиц MYSQL с некоторых строк отличаться от других

table_cart: 

cart_id | item_id | quantity 
---------------------------- 
00001  285  1 
00002  482  2 
00003  683  6 
00004  627  1 

table_products: 

product_id | product_name | quantity 
------------------------------------------- 
285   some name   50 
482   another name  40 
683   one more name  35 
627   yet another name 80 

То, что я пытаюсь показать это 2 вещи из table_cart (item_id и количество) и 1 вещь из table_products (имя). Проблема в том, что когда он хватает количество с моим кодом, он выбирает один из table_products, который не тот, который мне нужен. Я предполагаю, что я сделал что-то не так с соединением столов, но я попробовал INNER, LEFT, RIGHT и т. Д., И никто не работает.

Мой запрос выглядит так:

$product_rows = $this->query(" 
SELECT * FROM table_cart INNER JOIN table_products 
ON table_cart.item_id=table_products.product_id 
WHERE cart_id='".$cart_id."'" 
"); 

И тогда выход это нравится:

$item_details = mysql_fetch_array($product_rows); 

$item_details['item_id'] 
$item_details['name'] 
$item_details['quantity'] 

Что я делаю неправильно?

ответ

1

Ваш join в порядке. Проблема заключается в том, что select * и тот факт, что два столбца имеют одинаковое имя (quantity - в обеих таблицах).

Вы должны перечислить столбцы, которые вы хотите явно:

SELECT c.item_id, p.name, p.quantity 
FROM table_cart c INNER JOIN 
    table_products p 
    ON c.item_id = p.product_id 
WHERE cart_id='".$cart_id."'"; 
Смежные вопросы