powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Need Help! Помогите составить запрос.
4 сообщений из 4, страница 1 из 1
Need Help! Помогите составить запрос.
    #32900016
motorist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
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
Need Help! Помогите составить запрос.
    #32900380
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не... простым 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
Need Help! Помогите составить запрос.
    #32922114
Lensky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возьми FastReport и используй компонент CrossTable
...
Рейтинг: 0 / 0
Need Help! Помогите составить запрос.
    #32923090
Фотография S.PR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
4 сообщений из 4, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Need Help! Помогите составить запрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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