Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос на Cross  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
Уважаемые коллеги, прошу помощи!
У меня большая задача, которую можно свести к простой

Есть три таблицы- Countries, Cities, Rivers

CountryID Country
1 Россия
2 США
3 Германия
4 Испания
5 Италия
6 Франция

CityID CountryID City
1 1 Москва
2 1 Санкт-Петербург
3 1 Екатеринбург
4 1 Новосибирск
5 1 Самара
6 2 Чикаго
7 2 Вашингтон
8 2 Атланта
9 3 Берлин
10 3 Мюнхен
11 3 Гамбург
12 3 Бремен
13 4 Париж
14 4 Лион
15 5 Милан

RiverID CountryID River
1 1 Волга
2 1 Дон
3 1 Енисей
4 1 Ангара
5 1 Иртыш
6 1 Лена
7 1 Обь
8 1 Терек
9 2 Миссиссипи
10 2 Миссури
11 3 Рейн
12 3 Эльба
13 3 Рейн
14 3 Дунай
15 4 Рона
16 4 По

мне нужно получить таблицу вроде этой

Country City River
--------------------------------------------
Россия Москва Волга
Россия санкт- петербург Дон
.. ... ...
Сша Чикаго Миссисипи
Сша Вашингтон Миссури
Сша Атланта null
..........

Франция Париж Рона
Франция null По

То есть для каждой страны строк будет максимум из городов или рек
во вторую колонку все города страны в любом порядке, в третью- все реки.
Если чего- то меньше, то в соответствующей графе- нули.

Может кто знает. Я пробовал cross apply- что- то не выходит.
7 мар 14, 11:38    [15687566]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на Cross  [new]
Добрый Э - Эх
Guest
сначала full join рек и городов, после чего результат лефт джойном цеплять к странам
7 мар 14, 11:42    [15687588]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на Cross  [new]
Добрый Э - Эх
Guest
пример, чтобы мысль была яснее...
7 мар 14, 12:00    [15687704]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на Cross  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
Добрый Э - Эх,

Почти понятно, но у меня на самом деле чуть сложней
у меня- курсов 2500, книг 6000, методичек- 1000.
таблицы

Cources
--------
CID
CName

Book
-----
BID
Bname

Metod
------
MID
MName

и еще 2 индексных

CBook
------
CID
BID

MBOOK
--------
CID
MID

Буду думать.
7 мар 14, 12:12    [15687800]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на Cross  [new]
cross join
Guest
topdon
Добрый Э - Эх,

Почти понятно, но у меня на самом деле чуть сложней
у меня- курсов 2500, книг 6000, методичек- 1000.
таблицы

Cources
--------
CID
CName

Book
-----
BID
Bname

Metod
------
MID
MName

и еще 2 индексных

CBook
------
CID
BID

MBOOK
--------
CID
MID

Буду думать.

т.е. у вас каждая методичка курса связанна с каждой книгой курса?
7 мар 14, 12:25    [15687918]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на Cross  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
cross join,
нет, книги с методичками не связаны никак. Только с курсами.
7 мар 14, 12:35    [15688013]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на Cross  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9161
Если курс может иметь или методичку или книгу или и то и другое или ничего, то левый джойн курса с методичками и книгами через индексные таблицы.
7 мар 14, 13:03    [15688233]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на Cross  [new]
cross join
Guest
topdon
cross join,
нет, книги с методичками не связаны никак. Только с курсами.

и по какому принципу вы хотите в одной строке разместить книгу и методичку?
7 мар 14, 13:03    [15688234]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на Cross  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
cross join,
Книги с методичками не связаны, но и те и другие связаны с курсами. такова отчетная форма

Математика Книга1 Метод1
Книга2 Метод2
книга3

Информатика Книга1
Книга2

Программирование Метод1
Метод2

Психология К1 М1
К2 М2
К3
к4

Там еще экземпляры, но это уже лишнее.
7 мар 14, 13:45    [15688507]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить