Долгое время пользователь, первый раз постер.Я нашел похожие вопросы / ответы, как правило, связанные с подзапросами, но я не уверен, как применить к моей ситуации.
У меня есть 3 таблицы:
table1
id
table2
id | val (each id has 1 of 3 possible values)
table3
id | val (each id has 1 of 3 possible values)
РЕДАКТИРОВАТЬ: Пример: (table1 = уникальный идентификатор всех, кто посещал тематический парк; table2 = какой аттракцион посетил каждый посетитель первым; table3 = какой аттракционкаждый посетитель посетил второго).
Я хочу написать запрос для поиска 7 различных счетчиков: (1) количество уникальных идентификаторов в таблице1 (2) количество идентификаторов, которые имеют каждое из возможных значений в таблице2 (3)количество идентификаторов, которые имеют каждое из возможных значений в таблице 3
Мой запрос MySQL:
SELECT
count(DISTINCT table1.id) AS x1,
SUM(IF(table2.val='1'),1,0)) AS x2,
SUM(IF(table2.val='2'),1,0)) AS x3,
SUM(IF(table2.val='3'),1,0)) AS x4,
SUM(IF(table3.val='1'),1,0)) AS x5,
SUM(IF(table3.val='2'),1,0)) AS x6,
SUM(IF(table3.val='3'),1,0)) AS x7
FROM
table1
LEFT JOIN
table2 ON table1.id=table2.id
LEFT JOIN
table3 ON table1.id=table3.id
Результаты:
x1 = правильно (из-за DISTINCT)
x2, x3, x4 = правильно
x5, x6, x7 = ДВАЖДЫ число, которое они должны быть (потому что я получаю декартово произведение?)
Есть предложения?