Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 как убрать в запросе задвоенные значения ??  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
есть информация о ПК в БД, те инвентаризация. очень много задвоенных данных. помогиет это устранить. информация такая: проц, память, материнка, винт, сетевуха, МАК. если проц 2х ядерный, то это 2е строки, а если на нём ещё 2 сетевухи и 2 винта, то вообще 6 или 8 строк. при этом дублируютсянекоторые. писал запрос так: select destinct cpu, net, hdd и тд. строк становится меньше, но всё равно здвоенных много. вычслил по одинаковым МАК-адресам. те DISTINCT полностью не помог. подскажите, как избавиться от задвоенных строк??
10 июл 12, 17:09    [12846317]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Glory
Member

Откуда:
Сообщений: 104760
seeerg_23
полностью не помог. подскажите, как избавиться от задвоенных строк??

Задвоенная строка есть строка в которой значения _всех_ поля совпадают
А если совпадают значения только в некоторых полях, то это разны строки.
10 июл 12, 17:12    [12846332]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
повторяются строки через одну.
10 июл 12, 17:23    [12846394]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
seeerg_23
повторяются строки через одну.
У вас после distinct остаются одинаковые строки? Поздравляю, вы нашли баг в MS SQL.
10 июл 12, 17:24    [12846403]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
seeerg_23
повторяются строки через одну.

так покажите ваш запрос с distinct и одинаковые строки, которые он выдает
10 июл 12, 17:29    [12846446]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
те так, подробнее: пк 2х я дерный, с 2мя сетевухами. запрос выдаёт 4 строки: к одному ядру относятся 2е сетевухи - те 2 строки. и ко второму ядру тоже эти же 2 сетевухи - ещё 2 строки. мак-адрес 1й совпадает с 3й строкой, 2й - с 4й. как исправить это повторение?? должно ж всего 2е строки быть !!!
10 июл 12, 17:29    [12846449]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
seeerg_23
те так, подробнее: пк 2х я дерный, с 2мя сетевухами. запрос выдаёт 4 строки: к одному ядру относятся 2е сетевухи - те 2 строки. и ко второму ядру тоже эти же 2 сетевухи - ещё 2 строки. мак-адрес 1й совпадает с 3й строкой, 2й - с 4й. как исправить это повторение?? должно ж всего 2е строки быть !!!
У вас в запросе в 17й строке ошибка.
10 июл 12, 17:30    [12846456]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 791
seeerg_23
те так, подробнее: пк 2х я дерный, с 2мя сетевухами. запрос выдаёт 4 строки: к одному ядру относятся 2е сетевухи - те 2 строки. и ко второму ядру тоже эти же 2 сетевухи - ещё 2 строки. мак-адрес 1й совпадает с 3й строкой, 2й - с 4й. как исправить это повторение?? должно ж всего 2е строки быть !!!


NULL-значения в полях есть? Если да - NULL не равен NULL. Отсюда и "дублирование".
10 июл 12, 17:33    [12846476]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
flexgen
NULL-значения в полях есть? Если да - NULL не равен NULL. Отсюда и "дублирование".

это вы о чем? distinct так не думает
10 июл 12, 17:37    [12846496]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
flexgen
NULL-значения в полях есть? Если да - NULL не равен NULL. Отсюда и "дублирование".
Правда, что ли?
select distinct
    a.a
from (
    select null a
    union all select null
) a    
10 июл 12, 17:39    [12846512]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
обычный запрос select distinct netbios name, cpu, network adapter, mac from pc inner join net on pc.id=net.id
может тут подзапрос надо писать (те внутр) или группировку сделать GROUP BY... но по какому полю ??
10 июл 12, 17:40    [12846520]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
seeerg_23
обычный запрос select distinct netbios name, cpu, network adapter, mac from pc inner join net on pc.id=net.id
может тут подзапрос надо писать (те внутр) или группировку сделать GROUP BY... но по какому полю ??
Как только кто-нибудь угадает структуру ваших таблиц и данные, которые в них находятся, так и ответ будет.
10 июл 12, 17:42    [12846530]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 791
Shakill
это вы о чем? distinct так не думает


Ты, видимо, об этом - http://msdn.microsoft.com/en-US/library/ms191270(v=sql.105).aspx

Care must be taken when comparing null values. The behavior of the comparison depends on the setting of the SET ANSI_NULLS option.

А как там у топик-стартера сделано - вопрос. Запрос то он нам не показал.
10 июл 12, 17:43    [12846540]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
ещё может объединение табл надо не inner join, а left, right или out ?? а как-то вот так ещё реально сделать: ... where not in net.mak=net.mak ?? те одинаковые значения исключить??
10 июл 12, 17:46    [12846568]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
структура простейшая из 2х табл select distinct netbios name, cpu, network adapter, mac from pc inner join net on pc.id=net.id
10 июл 12, 17:49    [12846583]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
flexgen
Shakill
это вы о чем? distinct так не думает


Ты, видимо, об этом - http://msdn.microsoft.com/en-US/library/ms191270(v=sql.105).aspx

Care must be taken when comparing null values. The behavior of the comparison depends on the setting of the SET ANSI_NULLS option.

А как там у топик-стартера сделано - вопрос. Запрос то он нам не показал.
А вы проверять не пробовали, прежде чем писать? Делов на 30 секунд.
10 июл 12, 17:49    [12846585]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
seeerg_23
структура простейшая из 2х табл select distinct netbios name, cpu, network adapter, mac from pc inner join net on pc.id=net.id


еще несколько сообщений, и вы наконец-то покажете пример входных данных и полученного результата и поясните, чем полученное отличается от желаемого? :)
10 июл 12, 17:51    [12846597]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
seeerg_23
структура простейшая из 2х табл select distinct netbios name, cpu, network adapter, mac from pc inner join net on pc.id=net.id
Раз структура "простейшая", то ошибка "элементарнейшая".
10 июл 12, 17:51    [12846602]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
Shakill
еще несколько сообщений, и вы наконец-то покажете пример входных данных и полученного результата и поясните, чем полученное отличается от желаемого? :)
Это практической занятие в рамках тренинга по курсу "юный партизан".
10 июл 12, 17:52    [12846610]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 791
Гавриленко Сергей Алексеевич
А вы проверять не пробовали, прежде чем писать? Делов на 30 секунд.


Не раз и не два сталкивался с ситуацией когда при попытке связать таблицы по полю с NULL-значением результатом было "дублирование" данных. Опять-таки в данной ситуации мы не знаем что там происходит у топик-стартера.
10 июл 12, 17:59    [12846650]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
flexgen
Гавриленко Сергей Алексеевич
А вы проверять не пробовали, прежде чем писать? Делов на 30 секунд.


Не раз и не два сталкивался с ситуацией когда при попытке связать таблицы по полю с NULL-значением результатом было "дублирование" данных. Опять-таки в данной ситуации мы не знаем что там происходит у топик-стартера.
При чем здесь "связать" и distinct?
10 июл 12, 18:00    [12846656]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
flexgen
Гавриленко Сергей Алексеевич
А вы проверять не пробовали, прежде чем писать? Делов на 30 секунд.


Не раз и не два сталкивался с ситуацией когда при попытке связать таблицы по полю с NULL-значением результатом было "дублирование" данных. Опять-таки в данной ситуации мы не знаем что там происходит у топик-стартера.
Это как это? Сравнение null-значений дает ложь. Соединие по условию, которое дает ложь, не происходит. Откуда тут появляется дублирование и дублирование чего?
10 июл 12, 18:05    [12846688]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
iap
Member

Откуда: Москва
Сообщений: 47007
Гавриленко Сергей Алексеевич
Сравнение null-значений дает ложь.
Если точнее, то UNKNOWN.
А предикаты обычно любят TRUE

Однако. NULL в данной теме не при чём.
Можно о нём пока забыть.
10 июл 12, 21:27    [12847364]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
вот результат

К сообщению приложен файл. Размер - 17Kb
11 июл 12, 08:48    [12848503]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
seeerg_23,
И где же тут задвоенные строки??
А если у компа 2 видюхи,то результат повергнет вас в шок???
Да и
select distinct netbios name, cpu, network adapter, mac from pc inner join net on pc.id=net.id

и приведенный результат не сходятся.
11 июл 12, 09:23    [12848601]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
а вы сравните мак адреса. но я только что вроде бы выход нашёл. на небольшом количестве данных работает всё правильно. применил группировку GROUP BY и для каждого поля применил distinct. те общий distinct (select distinct ...) не совсем подходит.
вот так у меня сейчас:

select netbios_name, (min(distinct cpu)), (min(distinct network_adapter)), (min(distinct mac) from pc inner join net on pc.id=net.id group by netbios_name.
11 июл 12, 09:43    [12848673]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
seeerg_23
на небольшом количестве данных работает всё правильно

Не ну раз правильность запроса зависит от количества данных - это зачет !!

seeerg_23
select netbios_name, (min(distinct cpu)), (min(distinct network_adapter)), (min(distinct mac) from pc inner join net on pc.id=net.id group by netbios_name

Это на каком диалекте ?
11 июл 12, 09:51    [12848718]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
данные проверяются на правильность в малом кол-ве. по крайней мере я так делаю. а потом, после отладки, применяю к массиву данных
11 июл 12, 10:11    [12848820]     Ответить | Цитировать Сообщить модератору
 Re: как убрать в запросе задвоенные значения ??  [new]
naPmu3aH
Member

Откуда: из лесу
Сообщений: 1449
А кто сказал, что на приведеном скриншоте строки одинаковые???
Один только я вижу разницу как минимум в столбцах Memm...
11 июл 12, 11:23    [12849301]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить