powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывести значения нескольких полей, одно из которых должно быть уникальным
9 сообщений из 9, страница 1 из 1
Вывести значения нескольких полей, одно из которых должно быть уникальным
    #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
Вывести значения нескольких полей, одно из которых должно быть уникальным
    #39861169
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex163,

а дубли куда девать?
...
Рейтинг: 0 / 0
Вывести значения нескольких полей, одно из которых должно быть уникальным
    #39861172
Alex163
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap, Вот и я думаю куда ))
...
Рейтинг: 0 / 0
Вывести значения нескольких полей, одно из которых должно быть уникальным
    #39861194
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex163iap, Вот и я думаю куда ))Так это вопрос бизнес логики, как это может решить программист?
Задайте вопрос клиенту, "вот, есть 10 строк с одинаковым Brand_ID, какую из них вывести?"
...
Рейтинг: 0 / 0
Вывести значения нескольких полей, одно из которых должно быть уникальным
    #39861249
Alex163
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg, Если есть дубль, то одну любую строку из этих дублей
...
Рейтинг: 0 / 0
Вывести значения нескольких полей, одно из которых должно быть уникальным
    #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
Вывести значения нескольких полей, одно из которых должно быть уникальным
    #39861285
Alex163
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо. Таким запросом я пробовал, в таблицах более 200 млн. строк, результат выполнения около 5 минут, из-за функций MIN(). Но по-другому видимо никак.
...
Рейтинг: 0 / 0
Вывести значения нескольких полей, одно из которых должно быть уникальным
    #39861316
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex163в таблицах более 200 млн. строк, результат выполнения около 5 минут
Тогда нумерация в CTE должна быть пошустрее. Особенно на TypeCars если есть хоть какой составной индекс с префиксом Brand_ID, на который можно сесть.
...
Рейтинг: 0 / 0
Вывести значения нескольких полей, одно из которых должно быть уникальным
    #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
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывести значения нескольких полей, одно из которых должно быть уникальным
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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