Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Need Help! Помогите составить запрос. / 4 сообщений из 4, страница 1 из 1
03.02.2005, 18:03
    #32900016
motorist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need Help! Помогите составить запрос.
Доброго времени суток!
subj
Суть задачи:
Есть таблица вида:
Команда1 | Команда 2 | Результат игры
---------------------------------------
Динамо | Спартак | x:x
---------------------------------------
Спартак | Зенит | y:y
---------------------------------------
Зенит | Динамо | z:z
---------------------------------------

Необходимо средствами SQL получить следующий результат
| Динамо | Спартак | Зенит
--------------------------------------------
Динамо | | x:x | z:z
--------------------------------------------
Спартак | x:x | | y:y
--------------------------------------------
Зенит | z:z | y:y |
--------------------------------------------

Сложность в том, что можно использовать только select (т.е. без создания временных таблиц и т.д.)

Если кто сможет, подкиньте идейку...

Спасибо!
...
Рейтинг: 0 / 0
04.02.2005, 00:25
    #32900380
andrushok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need Help! Помогите составить запрос.
Не... простым selectом сие не решается. А вот функцию, что табличку возвращает - написать расплюнуть...

У тя хоть количестово комманд ограничено? Если да, то можно некий изврат родить типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select '' AS NAME, 'Dinamo' AS DINAMO, 'Spartak' AS SPARTAK, 'Zenit' AS ZENIT from DUAL 
union
select 'Dinamo' AS NAME, 
'x' AS DINAMO, 
(select score from t where team1='Dinamo' and team2 = 'Spartak') AS SPARTAK, 
(select score from t where team1='Dinamo' and team2 = 'Zenit') AS ZENIT 
from DUAL 
union
select 'Spartak' AS NAME, 
(select score from t where team1='Spartak' and team2 = 'Dinamo') AS DINAMO, 
'x' AS SPARTAK, 
(select score from t where team1='Spartak' and team2 = 'Zenit') AS ZENIT 
from DUAL 
union
select 'Zenit' AS NAME, 
(select score from t where team1='Zenit' and team2 = 'Dinamo') AS DINAMO, 
(select score from t where team1='Zenit' and team2 = 'Spartak') AS SPARTAK, 
'x' AS ZENIT 
from DUAL; 

Ух, что то в таком духе....
...
Рейтинг: 0 / 0
18.02.2005, 02:23
    #32922114
Lensky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need Help! Помогите составить запрос.
Возьми FastReport и используй компонент CrossTable
...
Рейтинг: 0 / 0
18.02.2005, 13:18
    #32923090
S.PR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need Help! Помогите составить запрос.
motoristДоброго времени суток!
subj
Суть задачи:
Есть таблица вида:
Команда1 | Команда 2 | Результат игры
---------------------------------------
Динамо | Спартак | x:x
---------------------------------------
Спартак | Зенит | y:y
---------------------------------------
Зенит | Динамо | z:z
---------------------------------------

Необходимо средствами SQL получить следующий результат
| Динамо | Спартак | Зенит
--------------------------------------------
Динамо | | x:x | z:z
--------------------------------------------
Спартак | x:x | | y:y
--------------------------------------------
Зенит | z:z | y:y |
--------------------------------------------

Сложность в том, что можно использовать только select (т.е. без создания временных таблиц и т.д.)

Если кто сможет, подкиньте идейку...

Спасибо!Возможно ввести справочник команд вида:

Команда№ п/пДинамо1Спартак2Зенит3

Далее № п/п использовать как номер колонки в отчете:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT ТР.Команда1,
(SELECT Результат игры FROM таблица результатов WHERE (Команда1=ТР.Команда1) AND (Команда2=(SELECT № п/п FROM справочник команд WHERE № п/п= 1 ))) AS колонка1
(SELECT Результат игры FROM таблица результатов WHERE (Команда1=ТР.Команда1) AND (Команда2=(SELECT № п/п FROM справочник команд WHERE № п/п= 2 ))) AS колонка2
(SELECT Результат игры FROM таблица результатов WHERE (Команда1=ТР.Команда1) AND (Команда2=(SELECT № п/п FROM справочник команд WHERE № п/п= 3 ))) AS колонка3
и т.д. с избытком
FROM таблица результатов ТР
GROUP BY ТР.Команда1
...
Рейтинг: 0 / 0
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Need Help! Помогите составить запрос. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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