ВЫБЕРИТЕ одинаковые данные из ЛИБО одной из двух таблиц - PullRequest
0 голосов
/ 21 апреля 2019

Я должен сделать немного хронометража. Некоторые сотрудники являются частью первой команды, а некоторые - частью второй команды. Мне нужно отобразить простую таблицу о том, кто вошел в систему и когда, а также другую основную информацию.

Если обе таблицы team1 и team2 имеют одинаковые столбцы (first_name, last_name и date), хотя абсолютно гарантировано, что только одна из этих таблиц будет возвращать данные в строке, как избежать использования группы псевдонимов (first_name AS team1_first_name) и просто всегда возвращаем SQL first_name?

Пример запроса:

SELECT *
FROM associates AS ac
LEFT JOIN team1 AS t1 ON (t1.id = ac.team1) 
LEFT JOIN team2 AS t2 ON (t2.id = ac.team2) 
ORDER BY ac.date DESC LIMIT 100;

Ответы [ 2 ]

1 голос
/ 21 апреля 2019

Если вы не хотите вводить все столбцы, а сотрудники работают только в одной команде, вы можете union таблицы до join:

SELECT a.*, t.*
FROM associates a JOIN
     ((SELECT t1.* FROM team1 t1) UNION ALL
      (SELECT t2.* FROM team2 t2)
     ) t
     ON t.id IN (ac.team1, ac.team2)
ORDER BY a.date DESC
LIMIT 100;
1 голос
/ 21 апреля 2019

Поскольку одно из t1.first_name и t2.first_name равно нулю, а другое - нет,Вы можете использовать coalesce() в операторе выбора следующим образом:

select
  coalesce(t1.first_name, t2.first_name) first_name,
  coalesce(t1.last_name, t2.last_name) last_name,
  .............................................
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...