Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывести значения нескольких полей, одно из которых должно быть уникальным / 9 сообщений из 9, страница 1 из 1
12.09.2019, 20:17
    #39861162
Alex163
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести значения нескольких полей, одно из которых должно быть уникальным
Доброго времени суток!
Связав две таблицы по полю Brand_ID, необходимо выводить значения TypeCars.Type, TypeCars.Brand_ID, TypeCars.Brand, чтобы Brand_ID не повторялось. Как это сделать проще и правильнее всего.

Cars

Brand_ID | Brand
------------+--------
Adf44 | AUDI
Kht23 | BMW
Jgr57 | MAZDA

TypeCars

Type | Brand_ID
------------+---------
Седан | Adf44
Универсал | Kht23
Кроссовер | Adf44
...
Рейтинг: 0 / 0
12.09.2019, 20:36
    #39861169
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести значения нескольких полей, одно из которых должно быть уникальным
Alex163,

а дубли куда девать?
...
Рейтинг: 0 / 0
12.09.2019, 20:46
    #39861172
Alex163
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести значения нескольких полей, одно из которых должно быть уникальным
iap, Вот и я думаю куда ))
...
Рейтинг: 0 / 0
12.09.2019, 22:14
    #39861194
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести значения нескольких полей, одно из которых должно быть уникальным
Alex163iap, Вот и я думаю куда ))Так это вопрос бизнес логики, как это может решить программист?
Задайте вопрос клиенту, "вот, есть 10 строк с одинаковым Brand_ID, какую из них вывести?"
...
Рейтинг: 0 / 0
13.09.2019, 07:28
    #39861249
Alex163
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести значения нескольких полей, одно из которых должно быть уникальным
alexeyvg, Если есть дубль, то одну любую строку из этих дублей
...
Рейтинг: 0 / 0
13.09.2019, 08:05
    #39861258
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести значения нескольких полей, одно из которых должно быть уникальным
Alex163необходимо выводить значения TypeCars.Type, TypeCars.Brand_ID, TypeCars.Brand
В таблице TypeCars нет поля Brand.

Alex163Если есть дубль, то одну любую строку из этих дублей
ROW_NUMBER() по группе равных TypeCars.Brand_ID при какой-нибудь сортировке в CTE и вывод тех, у кого эта функция вернёт единицу.
Или
Код: sql
1.
2.
3.
SELECT MIN(TypeCars.Type), TypeCars.Brand_ID, MIN(Cars.Brand)
FROM ...
GROUP BY  TypeCars.Brand_ID
...
Рейтинг: 0 / 0
13.09.2019, 09:12
    #39861285
Alex163
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести значения нескольких полей, одно из которых должно быть уникальным
Akina, спасибо. Таким запросом я пробовал, в таблицах более 200 млн. строк, результат выполнения около 5 минут, из-за функций MIN(). Но по-другому видимо никак.
...
Рейтинг: 0 / 0
13.09.2019, 09:51
    #39861316
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести значения нескольких полей, одно из которых должно быть уникальным
Alex163в таблицах более 200 млн. строк, результат выполнения около 5 минут
Тогда нумерация в CTE должна быть пошустрее. Особенно на TypeCars если есть хоть какой составной индекс с префиксом Brand_ID, на который можно сесть.
...
Рейтинг: 0 / 0
13.09.2019, 19:01
    #39861762
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести значения нескольких полей, одно из которых должно быть уникальным
AkinaИли
Код: sql
1.
2.
3.
SELECT MIN(TypeCars.Type), TypeCars.Brand_ID, MIN(Cars.Brand)
FROM ...
GROUP BY  TypeCars.Brand_ID

Не, ну это не "любая строка", это значения разных полей, взятые из разных строк.

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


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