Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Прошу помощи в составлении запроса. / 12 сообщений из 12, страница 1 из 1
06.08.2018, 00:11
    #39683515
eonae
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
Уважаемые форумчане!

Я пока ещё начинающий самоучка, поэтому заранее прошу простить за глупые вопросы. У меня их два.

№1. Есть две таблицы (MS SQL Server):

Таблица People (PersonID, FirstName, Surname, DateOfBirth, Role)

и таблица PhoneNumbers (PhoneNumberID, PhoneNumber, PersonID). Поле PersonID - ссылка на таблицу People

Задача состоит в том, чтобы сделать выборку всех полей из таблицы People (кроме ID) и ещё одного поля, в котором соединить через запятую телефонные номера из таблицы PhoneNumbers, относящиеся к данной персоне.

Подскажите пожалуйста, как подступиться к этой задаче. Нарыл что-то про STRING_AGG, но не разобрался, как её здесь применить.

№2. В моём случае одному человеку может соответствовать несколько телефонных номеров. То, что номера хранятся в отдельных таблицах - это не извращение? Сам до другого не додумался, но может быть есть стандартные паттерны для решения подобных проблем?

Заранее огромное спасибо!
С уважением, Сергей.
...
Рейтинг: 0 / 0
06.08.2018, 02:31
    #39683518
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
Такие задачи решаются с помощью CONCAT.


Было
21452624
...
Рейтинг: 0 / 0
06.08.2018, 09:02
    #39683564
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
А лучше документацию почитай
theory.phphtml.net/sql/group_concat.html
...
Рейтинг: 0 / 0
06.08.2018, 09:05
    #39683566
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
982183Такие задачи решаются с помощью CONCAT.


Было
21452624
слышал звон да не знает где он

через xml + stuff по той де ссылке и есть
...
Рейтинг: 0 / 0
06.08.2018, 10:53
    #39683612
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
Ну так и ссылка потом на документацию GROUP_CONCAT
Пусть человек смотрит на разные подходы.
...
Рейтинг: 0 / 0
06.08.2018, 11:10
    #39683619
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
982183Ну так и ссылка потом на документацию GROUP_CONCAT
Пусть человек смотрит на разные подходы.
ну тае и нет такой в mssql. STRING_AGG и то только с next
...
Рейтинг: 0 / 0
06.08.2018, 11:30
    #39683631
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
Ну да. Это уже мой косяк путанья диалектов.
...
Рейтинг: 0 / 0
06.08.2018, 11:48
    #39683633
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
eonae,

версия сервера какая?
...
Рейтинг: 0 / 0
06.08.2018, 18:09
    #39683884
eonae
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
SQL Server 2017

Большое спасибо всем за ответы! Правда не сказать, чтобы я во всём разобрался, но легче определённо стало )))

Если ещё кто-то по архитектуре подскажет - правильно ли я сделал, буду очень благодарен.
...
Рейтинг: 0 / 0
07.08.2018, 11:50
    #39684153
LameUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
eonaeSQL Server 2017

Большое спасибо всем за ответы! Правда не сказать, чтобы я во всём разобрался, но легче определённо стало )))

Если ещё кто-то по архитектуре подскажет - правильно ли я сделал, буду очень благодарен.
К сожалению нет под рукой инстанса 2017 чтобы проверить.
Писал согласно пониманию документации (описании функции STRING_AGG), если работает - дайте знать (спортивный интерес)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
	FirstName,
	Surname,
	DateOfBirth,
	Role,
	STRING_AGG (PhoneNumber, '; ') AS phoneNumbers 
from People p
join PhoneNumbers n on p.PersonID = n.PersonID
group by p.PersonID, FirstName, Surname, DateOfBirth, Role
...
Рейтинг: 0 / 0
08.08.2018, 10:39
    #39684658
eonae
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
автор
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
	FirstName,
	Surname,
	DateOfBirth,
	Role,
	STRING_AGG (PhoneNumber, '; ') AS phoneNumbers 
from People p
join PhoneNumbers n on p.PersonID = n.PersonID
group by p.PersonID, FirstName, Surname, DateOfBirth, Role



Запрос работает! Ровно так, как и ожидалось!

Большое спасибо )) Буду повышать скилл в чтении MSDN )
...
Рейтинг: 0 / 0
08.08.2018, 10:44
    #39684661
eonae
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в составлении запроса.
автор
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
	FirstName,
	Surname,
	DateOfBirth,
	Role,
	STRING_AGG (PhoneNumber, '; ') AS phoneNumbers 
from People p
join PhoneNumbers n on p.PersonID = n.PersonID
group by p.PersonID, FirstName, Surname, DateOfBirth, Role



Запрос работает! Ровно так, как и ожидалось!

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


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