MySQL проблема объединения двух таблиц с UNION - PullRequest
0 голосов
/ 09 ноября 2019

Я делаю UNION в MySQL, который некоторое время не могу устранить. Ошибка говорит о том, что синтаксис

неправильный в t1.*

Эти 2 SELECT работают нормально отдельно, проверено. Но СОЮЗ терпит неудачу. Я не привык к синтаксису MySQL, может, с этим что-то не так.

SELECT (
    t1.*,
    a.region_count
  FROM
    (
      SELECT
        data_region,
        COUNT(*) AS region_count
      FROM
        t2
      GROUP BY
        data_region
    ) AS a
  LEFT OUTER JOIN
    t1
  ON
    t1.values_att0 = a.data_region
  WHERE
    t1.name_0 = 'region'
) AS b

UNION

SELECT (
  t1.*,
  c.age_gen_count
FROM
  (
    SELECT
      data_dage,
      data_gen,
      COUNT(*) AS age_gen_count
    FROM
      t2
    GROUP BY
      data_dage,
      data_gen
  ) AS c
  LEFT JOIN
    t1
  ON
    t1.values_att0 = c.data_dage AND
    t1.id_question_1 = c.data_gen
  WHERE
    t1.name_0 = 'age' AND 
    t1.q_name_1 = 'gen'
)

1 Ответ

3 голосов
/ 09 ноября 2019

Вы используете круглые скобки вокруг своего поля SELECT, это ваш источник синтаксической ошибки (UNION не является причиной). Просто удалите их:

SELECT 
  t1.*,
  a.region_count
FROM
  (
    SELECT
      data_region,
      COUNT(*) AS region_count
    FROM t2
    GROUP BY data_region
  ) AS a
LEFT OUTER JOIN t1 
  ON  t1.values_att0 = a.data_region
WHERE t1.name_0 = 'region'

UNION ALL

SELECT 
  t1.*,
  c.age_gen_count
FROM
  (
    SELECT
      data_dage,
      data_gen,
      COUNT(*) AS age_gen_count
    FROM t2
    GROUP BY data_dage, data_gen
  ) AS c
LEFT JOIN t1 
  ON  t1.values_att0 = c.data_dage 
  AND t1.id_question_1 = c.data_gen
WHERE t1.name_0 = 'age' 
  AND t1.q_name_1 = 'gen'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...