powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с группирующим запросом!
9 сообщений из 9, страница 1 из 1
Помогите с группирующим запросом!
    #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
Помогите с группирующим запросом!
    #32071470
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приведите пример:

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

данные на выходе запроса
...
Рейтинг: 0 / 0
Помогите с группирующим запросом!
    #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
Помогите с группирующим запросом!
    #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
Помогите с группирующим запросом!
    #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
Помогите с группирующим запросом!
    #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
Помогите с группирующим запросом!
    #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
Помогите с группирующим запросом!
    #32071552
Александр_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, только что-то слегка не так...

2 jimmers: Увы, порядок важен :(
...
Рейтинг: 0 / 0
Помогите с группирующим запросом!
    #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
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с группирующим запросом!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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