Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2008, 14:23   #1
Mary_star
Пользователь
 
Регистрация: 11.02.2008
Сообщений: 13
По умолчанию Вывод результата по столбцам

Здравствуйте, программисты. Я уже давно мучаюсь над одной задачкой и все не могу решить. Даны 4 таблицы:
1)Disk
DiskID Number
----------- -----------
0 0
1 1
2 2
3 4
4 5
5 6
6 8
7 10
8 15

2)Films
FilmID FilmName
-------- --------------
0 нет
1 Любовь и ветер
2 Жизнь
3 Молодожены
4 Фильм_4
5 Не может быть!
6 Ну может быть..

3)Actors
ActorID ActorName
----------- -------------
0 нет
1 Коробкин
2 Медункова
3 Сидоров
4 Петров
5 Ключкин

4)temp
tempID f_DiskID f_FilmID f_ActorID
------- --------- -------- -----------
0 0 0 0
1 1 1 2
2 1 1 3
3 2 3 1
4 3 2 4
5 3 5 2
6 4 5 2
7 4 3 1
8 5 6 5
9 6 6 5
10 6 1 2
11 6 1 3

И мне нужно вывести название фильма в 1 столбце, затем перечислить номера дисков на которых записан фильм во 2 столбце, а потом перечислить имена актеров, снимавшихся в фильме в 3 столбце

Примерно так должно это выглядеть:

filmname
------------------- --------- -----------------------
Любовь и ветер 1, 8 Медункова, Сидоров
Жизнь 4 Петров
Молодожены 5,2 Коробкин
Не может быть! 4 ,5 Медункова
Ну может быть.. 6,8 Ключкин
Mary_star вне форума Ответить с цитированием
Старый 27.02.2008, 14:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну а как делаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.02.2008, 18:40   #3
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

Пиши функцию чтоб не мудрить(или 2 ).Передавай id фильма а она тебе строчку с нужной информацией .
Domovoy вне форума Ответить с цитированием
Старый 01.03.2008, 13:37   #4
Mary_star
Пользователь
 
Регистрация: 11.02.2008
Сообщений: 13
По умолчанию

Может код напишите, а то я не пойму что нужно сделать. И какую функцию нужно написать?
Mary_star вне форума Ответить с цитированием
Старый 03.03.2008, 13:15   #5
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

Создаём функцию
Код:
create function fnFilmInfo(@FilmID int,@flag int)
returns varchar(1000)
as
begin
declare @result varchar(1000)
set @result =''
if @flag=0 --№ дисков
  select @result=@result+','+Number from Disks where DiskID in (select distinct f_DiskID from temp where f_filmID=@FilmID)

if @flag=1 --Исполнители
  select @result=@result+','+ActorName from Actors where ActorID in (select distinct f_ActorID from temp where f_filmID=@FilmID)

return @result
end
go
Пишем запрос
Код:
select filmname,dbo.fnFilmInfo(FilmID,0),dbo.fnFilmInfo(FilmID,1) from films
Вобщем чот типо етого
Domovoy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возврат результата функции по ссылке gladov Общие вопросы C/C++ 2 24.06.2008 22:48
сохранение результата запроса в таблицу БД stepchild БД в Delphi 11 13.06.2008 11:20
двумерный массив, нати макс.сумму по столбцам mau6 Помощь студентам 5 04.06.2008 21:14
SQL запрос сразу по двум столбцам одной таблицы Иван БД в Delphi 6 03.01.2008 14:36