Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка, повторы в строке / 17 сообщений из 17, страница 1 из 1
05.03.2019, 11:23
    #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
05.03.2019, 12:21
    #39782423
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
bennisi,

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

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

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

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

В любом случае построенный алгоритм обязан гарантировать, что на каком-то его этапе (необязательно последнем) останется единственная запись.
...
Рейтинг: 0 / 0
05.03.2019, 14:43
    #39782523
bennisi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
может есть способ мой запрос подкорректировать? убрать 2 повторяющиеся строки с id = 3 , какая-нибудь функция отметания следующей строки, если id совпадает существует?
...
Рейтинг: 0 / 0
05.03.2019, 15:34
    #39782556
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
bennisiкакая-нибудь функция отметания следующей строкиПонятие "следующей строки" появится только после того, как в запросе появится ORDER BY по выражению, по которому все записи набора будут уникальны.
...
Рейтинг: 0 / 0
06.03.2019, 15:12
    #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
06.03.2019, 20:06
    #39783216
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
bennisiжелательно соединить по "Наименованию" , если нет то "Раздел спец." если нет то "Марка мат." Лучше создать таблицу приоритетов соединения. Причём она же будет являться справочником name_type, т.е. у таблицы атрибутов будет FK на неё.
...
Рейтинг: 0 / 0
11.03.2019, 07:59
    #39784339
bennisi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
Akina, не совсем понимаю как должна выглядеть эта таблица приоритетов соединения?
...
Рейтинг: 0 / 0
11.03.2019, 08:21
    #39784345
bennisi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
точнее как таблица приоритетов соединения работает?
...
Рейтинг: 0 / 0
11.03.2019, 08:41
    #39784350
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
bennisiкак таблица приоритетов соединения работает?К базовой записи привязывается таблица атрибутов, а к ней таблица приоритетов. Соответственно в суммарной, развёрнутой, таблице мы имеем для каждой базовой записи несколько записей - в каждой из них копия базовой записи, один атрибут, и к нему приоритет именно этого атрибута. После чего из всех возможных для каждой записи атрибутов выбирается один, имеющий наибольший приоритет.
...
Рейтинг: 0 / 0
11.03.2019, 08:42
    #39784351
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
...
Рейтинг: 0 / 0
13.03.2019, 09:36
    #39785190
bennisi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
Akina, таблицу приоритетов я создал, что делать потом? Выборка что в faq не работает, либо я что-то не то делаю, либо из-за того, что по глупости не в ту ветку форума написал работаю в ms sql
...
Рейтинг: 0 / 0
13.03.2019, 11:02
    #39785235
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
bennisiработаю в ms sqlУуу.. сильно. Создавайте новую тему - в правильном разделе.
...
Рейтинг: 0 / 0
13.03.2019, 11:14
    #39785241
bennisi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, повторы в строке
Спасибо за помощь, сам по не знанию вас в заблуждение ввел))
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка, повторы в строке / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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