Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Выборка из двух таблиц в один столбец


Автор: plutto 19.11.2011, 21:13
Есть три таблицы:
1. Справочник "Персонал" (personal):

   id_pers     surname_pers
         1         По умолчанию
         2         Иванов
         3         Петров

2. Отправители (sendings):

   id_send    surname_send
         1         По умолчанию
         2         Сидоров
         3         Васильев

3. Корреспонденция (poste):  id_send_p - идентификатор отправителя из personal, а id_send_s - идентификатор отправителя из sendings

   id_pos     id_send_p    id_send_s
        1                1                 2
        2                2                 1
        3                3                 1

Не могу составить SQL-запрос, выдающий таблицу:
   id_pos      surname
       1           Сидоров
       2           Иванов
       3           Петров

Т.е. нужно чтобы данные из двух таблиц попадали в один столбец. (Случай id_send_p=id_send_s=1 исключен).


Автор: Zloxa 20.11.2011, 10:44
Цитата(plutto @  19.11.2011,  21:13 Найти цитируемый пост)
Случай id_send_p=id_send_s=1 исключен

а что должно вернуться в случае, когда id_send_p != 1 and id_send_s != 1?

Код

select id_pos ,coalesce(sendings.surname_send,personal.surname_pers)
from poste
left join personal on id_send_p != 1 and id_send_p= id_pers
left join sendings on id_send_s != 1 and id_send_s = id_send

Автор: plutto 20.11.2011, 11:19
Цитата(Zloxa @ 20.11.2011,  10:44)
а что должно вернуться в случае, когда id_send_p != 1 and id_send_s != 1?

Этот случай тоже исключен.
БД заполняется из приложения на Delphi. 
Отправитель либо является сотрудником, и данные о нем беруться из таблицы "personal",
либо он не является сотрудником - данные в таблице "sendings".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)