помогите с запросом

Mizer
Дата: 04.02.2009 10:35:49
есть две таблицы
Т1
t1_ID bigint
t1_Name nvarchar(max)
t1_Have_t2 bit

T2
t2_ID
t2_Name

T3
t3_ID
t3_Name
t1_ID - связь с Т1
t2_ID - связь с Т2

задача такая:

вывод всех строк из Т1
с добавлением подгрупп из Т2 там, где t1_Have_t2 = true
вывод всех строк из Т3, относящихся к Т1 и Т2
Mizer
Дата: 04.02.2009 10:36:22
третья таблица позже добавилась
Glory
Дата: 04.02.2009 10:37:36
Mizer
третья таблица позже добавилась

И в чем заключается проблема то ? Что вы попытались сделать ?
Паганель
Дата: 04.02.2009 10:37:49
Mizer
Дата: 04.02.2009 10:43:35
проблема построении запроса вывода данных Т1 + Т2

примерно такокго вида:

1. t1_ID, t1_Name, если t1_Have_t2 = false, то следующая строка
2. t1_ID, t1_Name, если t1_Have_t2 = false, то следующая строка
3. t1_ID, t1_Name, если t1_Have_t2 = true, то далее выфвести все строки из t2
4/
5/
6/
....
N
N+1 t1_ID, t1_Name, если t1_Have_t2 = false, то далее по алгоритму


и, соответственно везде добавляются данные из t3, относящиеся к t1 и t2, соответственно
Glory
Дата: 04.02.2009 10:45:28
И где же в ваших таблицах "N", которая позволит найти "следующую строку" ?
Паганель
Дата: 04.02.2009 10:50:42
Рекомендации, пункт 6
предоставление Вами следующих материалов может существенно ускорить нахождение решения:
- скрипты создания таблиц;
- скрипты заполнения этих таблиц тестовыми данными;
- описание желаемого результата на примере тестовых данных.
Одно из двух - либо Вы это не читали (а ссылку я давал выше), либо ответ Вам нужен не срочно
Mizer
Дата: 04.02.2009 10:57:30
от 4 до N - количество строк в таблице t2, дальше опять идут как обычно,
пример на полях ID и Have_t2

t1_ID     t1_Have_t2   t2_ID     t3_ID
1           false            NULL     5332456

2           false            NULL     534534

3           false            NULL     643346

4           true            3452      5332456
4           true            3452      567457
4           true            3452      5745447

4           true            4452      453245

4           true            5352      344t4

5           false           NULL      567457
5           false           NULL      56456
5           false           NULL      745757

6           false           NULL      567457
Паганель
Дата: 04.02.2009 11:01:17
Автор, Вы слово "скрипт" как понимаете?
Вы то, что тут привели, выполнять пробовали?
Mizer
Дата: 04.02.2009 11:09:48
таблица Т1

CREATE TABLE [dbo].[Sp_Material_Group](
	[Mat_Group_ID] [bigint] NOT NULL,
	[Mat_Group_Name] [nvarchar](50) NULL,
	[Have_FS] [bit] NOT NULL,
 CONSTRAINT [PK_Sp_Material_Group] PRIMARY KEY CLUSTERED 
(
	[Mat_Group_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Sp_Material_Group] ADD  CONSTRAINT [DF_Sp_Material_Group_Mat_Group_ID]  DEFAULT ((1)) FOR [Mat_Group_ID]
GO

ALTER TABLE [dbo].[Sp_Material_Group] ADD  CONSTRAINT [DF_Sp_Material_Group_Have_FS]  DEFAULT ((0)) FOR [Have_FS]
GO

заполнение t1

insert into Sp_Material_Group (Mat_Group_ID,Mat_Group_Name,Have_FS) values (567162294964,'Заполнения',False)
insert into Sp_Material_Group (Mat_Group_ID,Mat_Group_Name,Have_FS) values (569154382363,'не определённая',False)
insert into Sp_Material_Group (Mat_Group_ID,Mat_Group_Name,Have_FS) values (640126606667,'Метизы',False)
insert into Sp_Material_Group (Mat_Group_ID,Mat_Group_Name,Have_FS) values (643990076470,'Уплотнители',False)
insert into Sp_Material_Group (Mat_Group_ID,Mat_Group_Name,Have_FS) values (828209321236,'Фурнитура',true)

... идём далее