Можно ли подсчитать количество результатов, сопоставленных в таблице 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, и было бы это более эффективно.
3 ответа
Попробуйте запрос ниже
SELECT count(*) AS count
FROM tableB b, tableA a
WHERE b.color = a.color
AND type = 'car';
Я бы попробовал что-то вроде:
SELECT COUNT(*)
FROM tableA, tableB
WHERE tableA.color=tableB.color
AND tableA.type='car';
Присоединяйтесь к своим таблицам по цветам, которые соответствуют вашему типу:
SELECT COUNT(*) FROM tableB JOIN tableA using (color) WHERE type = 'car';
http://sqlfiddle.com/#!2/760da5/1
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.