Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с группирующим запросом! / 9 сообщений из 9, страница 1 из 1
22.11.2002, 16:57:35
    #32071465
Александр_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с группирующим запросом!
Есть Table1, в которой есть поля ID,Name, Address, Phone,UseDef.
Есть Table2, в которой есть поля ID,Table1ID,Address,Phone.

Надо составить запрос, в котором было бы Name из Table1, кроме того, если UseDef=1, то Address,Phone из Table1, а также все Address и Phone из Table2, имеющие Table1ID=Table1.ID.

Помогите пожалуйста, я совсем уже не варю с этим запросом, а все примитивные познания об использовании WITH CUBE давно забыл... :(
...
Рейтинг: 0 / 0
22.11.2002, 17:01:10
    #32071470
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с группирующим запросом!
приведите пример:

данные в Table1
данные в Table2

данные на выходе запроса
...
Рейтинг: 0 / 0
22.11.2002, 17:21:15
    #32071488
Александр_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с группирующим запросом!
Пример:
Table1:
ID Name Address Phone UseDef
1 Roga&Copyta inc. RCAddress1 RCPhone1 0
2 Nimfa NAddress1 NPhone1 1

Table2:
ID Table1ID Address Phone
10 1 RCAddress2 RCPhone2
11 1 RCAddress3 RCPhone3
12 2 NAddress2 NPhone2
13 2 NAddress3 NPhone3

Result
Name Address Phone
Roga&Copyta inc. - -
- RCAddress2 RCPhone2
- RCAddress3 RCPhone3
Nimfa NAddress1 NPhone1
- NAddress2 NPhone2
- NAddress3 NPhone3
...
Рейтинг: 0 / 0
22.11.2002, 17:31:37
    #32071493
BigVovch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с группирующим запросом!
Так не пойдет?
Код: plaintext
1.
2.
3.
4.
select t1.Name, case when t1.UseDef =  1  then t1.Address else '-' end, case when t1.UseDef =  1  then t1.Phone else '-' end, ID
from Table1 t1
union '-', t2.Address, t2.Phone, Table1ID
from Table2 t2
order by  4 ,  1  desc
...
Рейтинг: 0 / 0
22.11.2002, 17:34:28
    #32071494
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с группирующим запросом!
Как-то так!

[src]SELECT DISTINCT * FROM
(
SELECT t1.Name, t2.Address, t2.Phone
FROM Table1 t1 LEFT JOIN Table2 t2 ON t2.Table1ID
UNION ALL
SELECT a.Name, a.Address, a.Phone
);[src]
...
Рейтинг: 0 / 0
22.11.2002, 17:35:35
    #32071495
BigVovch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с группирующим запросом!
Ошибся слегка...
Код: plaintext
1.
2.
3.
4.
5.
6.
select t1.Name, case when t1.UseDef =  1  then t1.Address else '-' end, case when t1.UseDef =  1  then t1.Phone else '-' end, ID
from Table1 t1
union all
select '-', t2.Address, t2.Phone, Table1ID
from Table2 t2 
where exists (select t3.ID from Table1 t3 where t3.ID = t2.Table1ID) 
order by  4 ,  1  desc
...
Рейтинг: 0 / 0
22.11.2002, 17:41:05
    #32071499
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с группирующим запросом!
Если порядок не важен, то

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TABLE Table1 (ID int primary key, Name varchar( 100 ), Address varchar( 100 ), Phone varchar( 100 ), UseDef bit)
CREATE TABLE Table2 (ID int primary key, Table1ID int REFERENCES Table1(ID), Address varchar( 100 ), Phone varchar( 100 ))

INSERT Table1 VALUES ( 1 , 'Roga&Copyta inc.', 'RCAddress1', 'RCPhone1',  0 )
INSERT Table1 VALUES ( 2 , 'Nimfa', 'NAddress1', 'NPhone1',  1 )

INSERT Table2 VALUES ( 10 ,  1 , 'RCAddress2', 'RCPhone2') 
INSERT Table2 VALUES ( 11 ,  1 , 'RCAddress3', 'RCPhone3')
INSERT Table2 VALUES ( 12 ,  2 , 'NAddress2', 'NPhone2')
INSERT Table2 VALUES ( 13 ,  2 , 'NAddress3', 'NPhone3')

SELECT Name, Address, Phone FROM Table1 WHERE UseDef =  1 
 UNION ALL
SELECT Name, '-', '-' FROM Table1 WHERE UseDef =  0 
 UNION ALL
SELECT '-', T2.Address, T2.Phone FROM Table2 T2 INNER JOIN Table1 T1 ON T2.Table1ID = T1.ID

DROP TABLE Table2
DROP TABLE Table1
...
Рейтинг: 0 / 0
22.11.2002, 21:04:29
    #32071552
Александр_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с группирующим запросом!
Спасибо, только что-то слегка не так...

2 jimmers: Увы, порядок важен :(
...
Рейтинг: 0 / 0
23.11.2002, 00:21:14
    #32071572
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с группирующим запросом!
Если можно игнорировать поля, то

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE TABLE Table1 (ID int primary key, Name varchar( 100 ), Address varchar( 100 ), Phone varchar( 100 ), UseDef bit)
CREATE TABLE Table2 (ID int primary key, Table1ID int REFERENCES Table1(ID), Address varchar( 100 ), Phone varchar( 100 ))

INSERT Table1 VALUES ( 1 , 'Roga&Copyta inc.', 'RCAddress1', 'RCPhone1',  0 )
INSERT Table1 VALUES ( 2 , 'Nimfa', 'NAddress1', 'NPhone1',  1 )

INSERT Table2 VALUES ( 10 ,  1 , 'RCAddress2', 'RCPhone2') 
INSERT Table2 VALUES ( 11 ,  1 , 'RCAddress3', 'RCPhone3')
INSERT Table2 VALUES ( 12 ,  2 , 'NAddress2', 'NPhone2')
INSERT Table2 VALUES ( 13 ,  2 , 'NAddress3', 'NPhone3')


SELECT ID,  0  SortFld, Name, Address, Phone FROM Table1 WHERE UseDef =  1 
 UNION ALL
SELECT ID,  0  SortFld, Name, '-', '-' FROM Table1 WHERE UseDef =  0 
 UNION ALL
SELECT T1.ID,  1 , '-', T2.Address, T2.Phone FROM Table2 T2 INNER JOIN Table1 T1 ON T2.Table1ID = T1.ID
ORDER BY ID, SortFld

DROP TABLE Table2
DROP TABLE Table1
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с группирующим запросом! / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]