Как можно сделать join таблицы, наложив при этом несколько условий?, т.е: В одной таблице хранятся все отделы, в другой — все комнаты, а третья имеет вид: первый столбец — номер отдела, второй — относительный номер комнаты в отделе, третий — описание. При этом комната не обязательно будет иметь описание. Необходимо получить результирующую таблицу со всеми комнатами отдела, и показать описание для тех, для которых оно есть. Необходимо что-то типа
... join описания on (описания.комната = комнаты.комната and описания.отдел = отделы.отдел)
Здравствуйте, ABK, Вы писали:
ABK>Как можно сделать join таблицы, наложив при этом несколько условий?, т.е: В одной таблице хранятся все отделы, в другой — все комнаты, а третья имеет вид: первый столбец — номер отдела, второй — относительный номер комнаты в отделе, третий — описание. При этом комната не обязательно будет иметь описание. Необходимо получить результирующую таблицу со всеми комнатами отдела, и показать описание для тех, для которых оно есть. Необходимо что-то типа
ABK>ABK>... join описания on (описания.комната = комнаты.комната and описания.отдел = отделы.отдел)
ABK>
Вообще, несколько условий в
on никто не запрещает. Но в твоем случае соединение надо записать так:
select ...
from описания
join отделы on описания.отдел = отделы.отдел
join комнаты on описания.комната = комнаты.комната
...
Здравствуйте, ABK, Вы писали:
ABK>Как можно сделать join таблицы, наложив при этом несколько условий?, т.е: В одной таблице хранятся все отделы, в другой — все комнаты, а третья имеет вид: первый столбец — номер отдела, второй — относительный номер комнаты в отделе, третий — описание. При этом комната не обязательно будет иметь описание. Необходимо получить результирующую таблицу со всеми комнатами отдела, и показать описание для тех, для которых оно есть. Необходимо что-то типа
ABK>ABK>... join описания on (описания.комната = комнаты.комната and описания.отдел = отделы.отдел)
ABK>
[sql]
SELECT *
FROM Rooms R
LEFT JOIN Descriptions D ON R.RoomNo = D.RoomNo AND D.DepartmentID = @ID
WHERE R.DepartmentID = @ID
[sql]
Где не будет описаний, будет NULL
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, ABK, Вы писали:
ABK>>Необходимо получить результирующую таблицу со всеми комнатами отдела, и показать описание для тех, для которых оно есть.
ABK>>ABK>>... join описания on (описания.комната = комнаты.комната and описания.отдел = отделы.отдел)
ABK>>
W>Вообще, несколько условий в on никто не запрещает. Но в твоем случае соединение надо записать так:
W>W>select ...
W> from описания
W> join отделы on описания.отдел = отделы.отдел
W> join комнаты on описания.комната = комнаты.комната
W>...
W>
Не пойдет. Записи, для которых не будет описания, в выборку не попадут.
Здравствуйте, ABK, Вы писали:
ABK>Как можно сделать join таблицы, наложив при этом несколько условий?, т.е: В одной таблице хранятся все отделы, в другой — все комнаты, а третья имеет вид: первый столбец — номер отдела, второй — относительный номер комнаты в отделе, третий — описание. При этом комната не обязательно будет иметь описание. Необходимо получить результирующую таблицу со всеми комнатами отдела, и показать описание для тех, для которых оно есть. Необходимо что-то типа
Наколько я понял твою структуру таблиц.
select * from mytable inner join комнаты (on комнаты.комната=mytable.комната
inner join отделы on отделы.отдел=mytable.отдел
left outer join описание on (mytable.описание = описание.текст)
where отделы.номер=@номер
С уважением, Gleb.