2012-06-01 2 views
0

У меня есть две таблицы, у которых есть столбец device_id, который я хочу подсчитать. Для целей демонстрации, схема выглядит следующим образом:Общий уникальный счет из двух таблиц в MySQL

Table 1: 'id', 'save_val', 'device_id_major' 
Table 2: 'id', 'save_val', 'location', 'device_id_team' 

Таблица 1 может иметь многие из тех же «device_id_major».

Я в основном хочу получить уникальное device_id из обеих таблиц, а затем из этого набора результатов получить счет уникального device_id (одно и то же device_id может появиться в обеих таблицах).

Возможно ли это в одном запросе?

ответ

1
SELECT count(DISTINCT aa.id) 
FROM (SELECT DISTINCT major_id AS id FROM `major` 
UNION ALL 
SELECT DISTINCT team_id AS id FROM `team`) 
AS aa 

Это похоже на трюк.

0

Вы можете использовать запрос, который принимает UNION обеих таблиц, а затем SELECT уникальные значения.

+1

SELECT счет (отличная T.ID) из (выберите id из первыйT union select id из второйT) T. Обратите внимание, что отдельный не нужен, потому что поведение профсоюза. – danihp

+0

Моя схема была немного отвратительной - можете ли вы пересказать? – mootymoots

1
select distinct aa.device_id, count(*) 
from(select distinct device_id from table1 
union all 
select distinct device_id from table2) as aa 
group by device_id 
order by device_id 

Или что-то вроде ... Поскольку у меня нет схемы, я не могу ее полностью проверить.

+0

Я отредактировал схему, чтобы быть более представительной ... – mootymoots

Смежные вопросы