Можно ли подсчитать количество результатов, сопоставленных в таблице 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

Вопрос - Сколько строк в таблице B связано с type = car? Результат должен вернуть 5.

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

0
user974634 23 Янв 2015 в 16:35

3 ответа

Лучший ответ

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

SELECT count(*) AS count 
FROM tableB b, tableA a 
WHERE b.color = a.color 
AND type = 'car';
4
sascha 23 Янв 2015 в 14:24

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

SELECT COUNT(*)
FROM tableA, tableB
WHERE tableA.color=tableB.color
AND tableA.type='car';
0
23 Янв 2015 в 13:53

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

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

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

2
ClmentM 23 Янв 2015 в 13:43