powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка, повторы в строке
17 сообщений из 17, страница 1 из 1
Выборка, повторы в строке
    #39782399
bennisi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, в таблице неодходимо убрать повторы в строке. Версий сборок 2, они сразу в одной таблице, но может быть более

id parent name TYPE version11 Сборочная единица Наименование Сборка 11 Корпус Наименование Деталь 11 Корпус Раздел спецификации Деталь 12 Вкладыш NULL Деталь 13 Резина ГОСТ Марка материала Материал по КД 13 Резина ГОСТ Раздел спецификации Материал по КД 14 Кожа техн. Марка материала Материал по КД 15 Пластик Раздел спецификации Материал по КД 16 Болт М8 Раздел спецификации Стандартные изделия 122 Сборочная единица Наименование Сборка 211 Корпус Наименование Деталь 211 Корпус Раздел спецификации Деталь 22 Вкладыш NULL Деталь 13 Резина ГОСТ Марка материала Материал по КД 13 Резина ГОСТ Раздел спецификации Материал по КД 14 Кожа техн. Марка материала Материал по КД 15 Пластик Раздел спецификации Материал по КД 16 Болт М8 Раздел спецификации Стандартные изделия 1
Sql еще изучаю, запрос делаю через WHERE, но от одинаковых записей не уйти(Материал по КД и Раздел спецификации), как по другому это реализовать?
Код: sql
1.
2.
3.
4.
5.
6.
7.
select * from #tabl
where ([name] = 'Наименование'
and TYPE != 'Материал по КД'
and TYPE != 'Стандартные изделия,')
or ([name] = 'Раздел спецификации' and _TYPE in ('Материал по КД', 'Стандартные изделия'))
or ([name] = 'Марка материала' and _TYPE = 'Материал по КД')
or ([name] is NULL and _TYPE = 'Материал по КД', 'Стандартные изделия', 'Деталь', 'Сборка')
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39782423
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bennisi,

у тебя повторов нет - id разные
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39782430
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bennisiв таблице неодходимо убрать повторыС точки зрения SQL "повтор" (хотя правильно - дубликат) - это когда равны значения ВСЕХ полей записи. Если хоть в одном поле хоть на полпробела разница - это уже не дубликаты.
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39782441
bennisi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в результате запроса остаются дубликаты записи:

id parent name TYPE version3 Резина ГОСТ Марка материала Материал по КД 13 Резина ГОСТ Раздел спецификации Материал по КД 1

id одинаковые, следовательно должна быть одна запись этого материала
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39782483
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bennisi id одинаковые, следовательно должна быть одна запись этого материалаЗначит, ВЫ (и никто иной), должны сформулировать чёткий и однозначный критерий, по которому любой, взяв несколько таких "дубликатов", чётко и однозначно определит, какая из этих записей должна остаться. Или, как вариант, как должна выглядеть одна запись, которая останется вместо всех этих.
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39782487
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтернативно, это может быть критерий, наоборот, удаления одной записи из группы.

Ну, скажем, это может выглядеть как:
1) Если в группе есть записи с разным version - удалить все записи с не-макисмальным version.
2) Далее - если есть записи с name NOT NULL, удалить все записи с name IS NULL.
3) Из оставшихся оставить записи наименьшим name при сортировке по алфавиту.
4) ...

В любом случае построенный алгоритм обязан гарантировать, что на каком-то его этапе (необязательно последнем) останется единственная запись.
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39782523
bennisi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может есть способ мой запрос подкорректировать? убрать 2 повторяющиеся строки с id = 3 , какая-нибудь функция отметания следующей строки, если id совпадает существует?
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39782556
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bennisiкакая-нибудь функция отметания следующей строкиПонятие "следующей строки" появится только после того, как в запросе появится ORDER BY по выражению, по которому все записи набора будут уникальны.
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39783027
bennisi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
был не прав, пересмотрел запрос, каша возникает при объединении с атрибутами, таблица с файлами:

idPerent id productversionNULL1СБ11 200Корпус11 201Болт М81NULL2СБ222 200Корпус22 201 Болт М822 202 Винт12203 Гайка1

необходимо соединить с таблицей атрибуты:

id name_type type1 Разработал Иванов1 Наименование МоторДиз1 Раздел спец. Сборка2 Разработал Петров2 Наименование МоторБенз2 Раздел спец. Сборка200Наименование Блок201Раздел спец. Стандартные изд.201Марка мат. Сталь202Марка мат. Железо203Раздел спец. Стандартные изд.
у некоторых файлов несколько атрибутов, желательно соединить по "Наименованию" , если нет то "Раздел спец." если нет то "Марка мат."

И получить такой результат:

idPerent id productversionname_type typeNULL1СБ1Наименование МоторДиз1 200Корпус1Наименование Блок1 201Болт М81Раздел спец. Стандартные изд.NULL2СБ22Наименование МоторБенз2 200Корпус2Наименование Блок2 201 Болт М82Раздел спец. Стандартные изд.2 202 Винт1Марка мат. Железо2203 Гайка1Раздел спец. Стандартные изд.
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39783216
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bennisiжелательно соединить по "Наименованию" , если нет то "Раздел спец." если нет то "Марка мат." Лучше создать таблицу приоритетов соединения. Причём она же будет являться справочником name_type, т.е. у таблицы атрибутов будет FK на неё.
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39784339
bennisi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, не совсем понимаю как должна выглядеть эта таблица приоритетов соединения?
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39784345
bennisi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точнее как таблица приоритетов соединения работает?
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39784350
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bennisiкак таблица приоритетов соединения работает?К базовой записи привязывается таблица атрибутов, а к ней таблица приоритетов. Соответственно в суммарной, развёрнутой, таблице мы имеем для каждой базовой записи несколько записей - в каждой из них копия базовой записи, один атрибут, и к нему приоритет именно этого атрибута. После чего из всех возможных для каждой записи атрибутов выбирается один, имеющий наибольший приоритет.
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39784351
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39785190
bennisi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, таблицу приоритетов я создал, что делать потом? Выборка что в faq не работает, либо я что-то не то делаю, либо из-за того, что по глупости не в ту ветку форума написал работаю в ms sql
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39785235
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bennisiработаю в ms sqlУуу.. сильно. Создавайте новую тему - в правильном разделе.
...
Рейтинг: 0 / 0
Выборка, повторы в строке
    #39785241
bennisi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь, сам по не знанию вас в заблуждение ввел))
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка, повторы в строке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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