sql select - объединить данные из столбца в один и запустить на нем разные - PullRequest
0 голосов
/ 08 ноября 2010

у меня есть таблица:

id    coach1    coach2    department    date
1       1         0           txt1       8/11/2010
2       3         0           txt2       1/11/2010
3       1         2           txt1       8/11/2010
4       3         1           txt1       8/11/2010

что я хочу сделать - это получить один столбец от обоих тренеров, игнорировать нули и без повторения чисел тренеров, поэтому результат этого примера будет:

coach    department    date
  1          txt1       8/11/2010
  2          txt1       8/11/2010
  3          txt1       1/11/2010

так что я использовал:

SELECT id,coach1 as coach,department,date FROM tblWinnings where coach1>0 UNION SELECT id,coach2 as coach,department,date FROM tblWinnings where coach2>0

но теперь мне нужно, чтобы он был различен по столбцу тренера

как мне это сделать?

спасибо!

Ответы [ 3 ]

1 голос
/ 08 ноября 2010
select distinct coach1 as coach from tblName
union 
select coach2 from tblName
order by coach

Если вам нужны только отдельные значения, не используйте Union All (объединение без предложения All предотвращает дублирование)

Поскольку вы продолжаете обновлять свой вопрос: вы столкнетесь спроблема, если вы хотите значения из других полей, так как они могут отличаться в зависимости от того, которое вы используете.(Последний? Самый ранний? Случайный?)

0 голосов
/ 08 ноября 2010
create view coaches as
  select coach1 as coach
    from table
   where coach1 <> 0
union all
  select coach2 as coach
    from table
   where coach1 <> 0;

select distinct coach
  from coaches;   
0 голосов
/ 08 ноября 2010

Я не могу вспомнить синтаксис для доступа, но что-то вроде

select distinct coach from (
select coach1 as coach from tableX 
union all 
select coach2 as coach from tableX) 
where coach <> 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...