powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сложная выборка (выбрать все значения из обоих таблиц для каждого )
9 сообщений из 9, страница 1 из 1
Сложная выборка (выбрать все значения из обоих таблиц для каждого )
    #32062368
Terol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть таблица
Код: plaintext
1.
2.
3.
4.
5.
RecordID	         PersonID	     CategoryID
      1                  10                  2 
      2                  10                  3 
      3                  11                  1 
      4                  11                  4 

и есть таблица
Код: plaintext
1.
2.
3.
4.
5.
      CategoryID           CategoryName
           1              магазин
           2              ларёк
           3              супермаркет
           4              заправка


нужно в итоге получить
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
PersonID	CategoryID            CategoryName
 10              1                       магазин
 10              2                       ларёк
 10              3                       супермаркет
 10              4                       заправка
 11              1                       магазин
 11              2                       ларёк
 11              3                       супермаркет
 11              4                       заправка


рыл в сторону outer join - не получается
...
Рейтинг: 0 / 0
Сложная выборка (выбрать все значения из обоих таблиц для каждого )
    #32062374
Фотография Alexes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
select P.PersonID,C.CategoryID,C.CategoryName
from (select distinct PersonID from Person) P
cross join Category C
...
Рейтинг: 0 / 0
Сложная выборка (выбрать все значения из обоих таблиц для каждого )
    #32062380
Terol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
хотелось бы только уточнить, почему нельзя было сделать сразу
Код: plaintext
1.
2.
select P.PersonID,C.CategoryID,C.CategoryName
from from Person P
cross join Category C


и не выбирать distinctом?
...
Рейтинг: 0 / 0
Сложная выборка (выбрать все значения из обоих таблиц для каждого )
    #32062388
Фотография Alexes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что для каждой записи из Person выбрались бы все записи из Category.
...
Рейтинг: 0 / 0
Сложная выборка (выбрать все значения из обоих таблиц для каждого )
    #32062390
Terol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так в мне в принципе так и нужно - для каждой записи из Person все (или по условию) записи из Category
...
Рейтинг: 0 / 0
Сложная выборка (выбрать все значения из обоих таблиц для каждого )
    #32062398
Фотография Alexes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под Person я подразумевал первую приведенную Вами таблицу. Может быть у Вас существует другая таблица Person, в которой PersonID - первичный ключ. Тогда, действительно distinct не нужен. А для первой таблицы он необходим, так как там повторяются записи с одинаковым PersonID.
...
Рейтинг: 0 / 0
Сложная выборка (выбрать все значения из обоих таблиц для каждого )
    #32062407
Terol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если тогда так?

Код: plaintext
1.
2.
select distinct P.PersonID,C.CategoryID,C.CategoryName
from from Person P
cross join Category C
...
Рейтинг: 0 / 0
Сложная выборка (выбрать все значения из обоих таблиц для каждого )
    #32062447
Фотография Alexes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так серверу приходится фильтровать (distinct) заведомо не меньше записей, чем в указаннном мной примере.
...
Рейтинг: 0 / 0
Сложная выборка (выбрать все значения из обоих таблиц для каждого )
    #32062459
Alterran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если назвать первую таблицу Person, а вторую Category, то
можно написать так:
Select p.personId, c.categoryId, c.categoryname
from Person p cross join Category c
group by p.personId, c.categoryId, c.categoryname

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


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