2015-01-23 3 views
0

Можно ли подсчитать количество результатов, сопоставленных в таблице B, из значений, полученных из таблицы A в том же запросе?Подсчитайте количество повторов в таблице B из значений в таблице A, используя один запрос

Например -

tableA 
-------------- 
color | type 
-------|------ 
blue | car 
red | truck 
orange | car 
green | car 

-

tableB 
-------------- 
color | sku 
-------|------ 
blue | 1 
red | 2 
orange | 3 
green | 4 
orange | 5 
green | 6 

Вопрос - Сколько строк в TableB связаны тип = автомобиль? Результат должен быть возвращен 5.

Использование двух запросов и некоторых PHP это довольно просто, мне было просто любопытно, возможно ли это с помощью одного запроса MySQL, и если бы он был более эффективным.

+0

попробуйте is: SELECT count (*) FROM tableB as tb LEFT JOIN tableB as ta ON ta.color = tb.color – goldlife

ответ

4

Попробуйте ниже запрос

SELECT count(*) AS count 
FROM tableB b, tableA a 
WHERE b.color = a.color 
AND type = 'car'; 
2

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

SELECT COUNT(*) FROM tableB JOIN tableA using (color) WHERE type = 'car'; 

http://sqlfiddle.com/#!2/760da5/1

+0

Спасибо за быстрый ответ! Я принял user304, потому что это позволило увеличить настройку, поскольку столбцы называются чем-то другим в двух таблицах и потому, что у него меньше репутации. – user974634

0

Я хотел бы попробовать что-то вроде:

SELECT COUNT(*) 
FROM tableA, tableB 
WHERE tableA.color=tableB.color 
AND tableA.type='car'; 
Смежные вопросы