2014-12-30 3 views
-1

у меня есть две таблицы, как это:Performing JOIN между двумя таблицами

table_1

id user_id item_id item_number 
15  1   1  7 
16  1   2  12 
17  1   3  1 
18  1   4  0 
19  1   5  11 
20  5   1  2 
21  5   2  2 
22  5   3  5 
23  5   4  7 
24  5   5  1 

table_2

id user_id item_id attribute 
41  5   1  1 
42  1   1  1 
43  7   5  1 
44  1   4  1 
45  1   4  0 

Я хотел бы, чтобы выбрать user_id, item_id и ITEM_NUMBER из table_1 и количества строки из таблицы_2, где table_1.user_id = table_2.user_id и table_1.item_id = table_2.item_id.

У меня есть это:

SELECT item_id, item_number, COUNT(attribute) AS number 
FROM table_1 
LEFT OUTER JOIN table_2 ON table_1.user_id = table_2.user_id 
WHERE table_1.user_id='1' 

Можете ли вы мне помочь?

Ожидаемый результат:

user_id item_id item_number number 
    1   1   7   1 
    1   2   12   0 
    1   3   1   0 
    1   4   0   2 
    1   5   11   0 
+0

Скопируйте ваше требование в свою попытку и вуаля, все готово. – fancyPants

ответ

1

Попробуйте это:

SELECT t1.user_id, t1.item_id, t1.item_number, COUNT(attribute) AS number 
FROM table_1 t1 
LEFT OUTER JOIN table_2 t2 ON t1.user_id = t2.user_id AND t1.item_id = t2.item_id 
WHERE t1.user_id = '1' 
GROUP BY t1.user_id, t1.item_id; 
+0

«Попробовать это» никогда не бывает достаточно. Пожалуйста, всегда объясняйте, что было сделано по-другому и почему это важно. –

0

вы должны использовать псевдоним, как одни и те же имена столбцов путает сервер, чтобы определить, какой столбец должен fetch..so вы можете использовать это ..

SELECT t1.user_id,t1.item_id, t1.item_number, COUNT(attribute) AS number 
FROM table_1 t1 
LEFT OUTER JOIN table_2 t2 ON t1.user_id = t2.user_id 
WHERE t1.user_id='1' GROUP BY t1.user_id, t1.item_id; 
0

Поскольку вам не нужны никакие значения столбцов из таблицы_2, я бы пошел с подзапросом чтобы получить счет:

select user_id, item_id, item_number, 
     (select count(*) from table_2 
     where table_1.user_id = table_2.user_id 
      and table_1.item_id = table_2.item_id) 
from table_1 
WHERE table_1.user_id='1' 
Смежные вопросы