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

Откуда:
Сообщений: 266
Добрый день.

Запрос:
SELECT DISTINCT f.name as f_name, 
f.address as f_address, 
f.business as f_business, 
f.web as f_web, 
f.phone as f_phone, 
p.name as p_name 
FROM Firm f 
left join Price p on p.id_service=f.id_service AND p.id_city=f.id_city AND p.id_firm=f.id_firm 
WHERE p.include='1' ORDER BY f.name ASC


Получаю результаты:
Картинка с другого сайта.

как видно из скриншота есть несколько неуникальных, одинаковых значений.
Подскажите почему они отображаются результатах, тогда как есть SELECT DISTINCT f.name as f_name и как сделать, чтобы выводились только уникальные значения f_name ?
22 апр 13, 16:33    [14213759]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
У тебя уникальная вся строка.
А ты хочешь уникальность по одному полю.
Придется использовать ранкинг или группировки.
22 апр 13, 16:35    [14213781]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
на скриншоте не видно последней колонки результата
22 апр 13, 16:36    [14213784]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
WHERE p.include='1'
делает бессмысленным LEFT JOIN
22 апр 13, 16:38    [14213805]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Amateur7,

Если выбрать имя только по одному разу,
то какими должны быть значения в остальных полях для каждого имени?
22 апр 13, 16:40    [14213820]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Amateur7
Member

Откуда:
Сообщений: 266
iap,

в принципе уникальность всей строки не нужна, т.е. должно быть уникально имя (f_name), а уникальность по остальным значениям не требуется.
22 апр 13, 17:04    [14213993]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
так и шо там у нас с последнею колонкою?
22 апр 13, 17:06    [14214004]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Amateur7
iap,

в принципе уникальность всей строки не нужна, т.е. должно быть уникально имя (f_name), а уникальность по остальным значениям не требуется.
Так что с остальными-то делать?
Может, требуется просто выбрать строки, в которых такое имя, которого нет в других строках,
а строки с именами, которые повторяются в других строках, просто игнорировыать?
Как Вас понимать-то вообще?
22 апр 13, 17:15    [14214083]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Amateur7
Member

Откуда:
Сообщений: 266
iap,

сорри, задача в том, чтобы выбрать строки с уникальными f_name, а остальные значения строки просто выбрать и все(без уникальности значений), т.е получается чтот-то вроде:

SELECT DISTINCT f.name as f_name
*
FROM Firm f 
left join Price p on p.id_service=f.id_service AND p.id_city=f.id_city AND p.id_firm=f.id_firm 
WHERE p.include='1' ORDER BY f.name ASC


только нужно еще добавить выборку неуникальных полей:

f.address as f_address, 
f.business as f_business, 
f.web as f_web, 
f.phone as f_phone, 
p.name as p_name 
22 апр 13, 17:32    [14214250]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Картинка с другого сайта.
22 апр 13, 17:37    [14214297]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
Amateur7, в вашем примере какая из строк 6-11 должна остаться и почему? p_name ведь в них будут разные, как можно предположить
22 апр 13, 17:39    [14214307]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Amateur7
i
выбрать строки с уникальными f_name

только нужно еще добавить выборку неуникальных полей:




ERROR: Division by zero encountered
22 апр 13, 17:42    [14214329]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
Amateur7
iap,

сорри, задача в том, чтобы выбрать строки с уникальными f_name, а остальные значения строки просто выбрать и все(без уникальности значений), т.е получается чтот-то вроде:



только нужно еще добавить выборку неуникальных полей:


Может надо выбрать уникальные f_name, а остальные значения если они не уникальны через запятую перечислить ?
22 апр 13, 17:50    [14214384]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Перефразирую вопрос:
нужно сделать выборку всех полей таблицы из базы данных с уникальностью по полю f.name.
Как это сделать из запроса:
SELECT DISTINCT f.name as f_name, 
f.address as f_address, 
f.business as f_business, 
f.web as f_web, 
f.phone as f_phone, 
p.name as p_name 
FROM Firm f 
left join Price p on p.id_service=f.id_service AND p.id_city=f.id_city AND p.id_firm=f.id_firm 
WHERE p.include='1' ORDER BY f.name ASC
22 апр 13, 18:41    [14214668]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
автор
SELECT f.name as f_name,
max(f.address) as f_address,
max(f.business) as f_business,
max(f.web) as f_web,
max(f.phone) as f_phone,
max(p.name) as p_name
FROM Firm f
left join Price p on p.id_service=f.id_service AND p.id_city=f.id_city AND p.id_firm=f.id_firm
WHERE p.include='1'
GROUP BY f.name
ORDER BY f.name ASC

тебе подойдет
22 апр 13, 18:42    [14214674]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31432
Amateur7
Перефразирую вопрос:
нужно сделать выборку всех полей таблицы из базы данных с уникальностью по полю f.name.
Так вас спрашивают, что это такое, как хоть это выглядит?

Как вы понимаете, например, фразу: "сделать выборку имён и фамилий с уникальностью по именам"?
22 апр 13, 18:51    [14214713]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Мистер Хенки
Amateur7
iap,

сорри, задача в том, чтобы выбрать строки с уникальными f_name, а остальные значения строки просто выбрать и все(без уникальности значений), т.е получается чтот-то вроде:



только нужно еще добавить выборку неуникальных полей:


Может надо выбрать уникальные f_name, а остальные значения если они не уникальны через запятую перечислить ?
Дык, молчит под пытками!!

Кстати, и на замечание про WHERE никак не реагирует
22 апр 13, 19:59    [14215045]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Народ, чтобы выбрать уникальные значения f_name есть запрос:
SELECT DISTINCT f.name as f_name
FROM Firm f 
left join Price p on p.id_service=f.id_service AND p.id_city=f.id_city AND p.id_firm=f.id_firm 
WHERE p.include='1' ORDER BY f.name ASC


на оператор left join и where внимания не обращайте вовсе - это вообще ни к чему.

к первоначальному запросу нужно добавить выборку полей(уникальности от них не требуется, просто перечислить при выборке):

f.address as f_address, 
f.business as f_business, 
f.web as f_web, 
f.phone as f_phone, 
p.name as p_name


вроде как все доступно пояснил, теперь уже точно...
23 апр 13, 00:33    [14216092]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
SELECT top 1 with ties f.name as f_name,
f.address as f_address, 
f.business as f_business, 
f.web as f_web, 
f.phone as f_phone, 
p.name as p_name
FROM Firm f 
left join Price p on p.id_service=f.id_service AND p.id_city=f.id_city AND p.id_firm=f.id_firm 
WHERE p.include='1' 
ORDER BY row_number() over ( partition by f.name order by f.name )
23 апр 13, 07:01    [14216261]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amateur7
вроде как все доступно пояснил, теперь уже точно...

Это задача называется так
для каждой записи одной таблицы выбрать одну запись другой таблицы - здесь идет описание критериев, которым должна соответствовать эта одна запись
23 апр 13, 09:08    [14216408]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Amateur7
уникальности от них не требуется, просто перечислить при выборке
Рекомендации, пункты 6 и 4
23 апр 13, 10:21    [14216818]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31432
Amateur7
к первоначальному запросу нужно добавить выборку полей(уникальности от них не требуется, просто перечислить при выборке):

вроде как все доступно пояснил, теперь уже точно...
Теперь вы повторили то, что писали раньше.

Ответьте лучше на вопрос:
alexeyvg
Как вы понимаете, например, фразу: "сделать выборку имён и фамилий с уникальностью по именам"?


Или сразу:
Паганель
Рекомендации, пункты 6 и 4
23 апр 13, 11:55    [14217466]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Amateur7
чтобы выбрать уникальные значения f_name есть запрос:
...
к первоначальному запросу нужно добавить выборку полей(уникальности от них не требуется, просто перечислить при выборке):
...
вроде как все доступно пояснил, теперь уже точно...

Мда... давайте лучше разовьём вопрос alexeyvg, заданный несколькими постами ранее:
alexeyvg
Как вы понимаете, например, фразу: "сделать выборку имён и фамилий с уникальностью по именам"?

Предположим, у нас есть таблица people с именами (name) и фамилиями (surname). И в этой таблице есть такие записи:
name surname
---- -------
Иван Иванов
Иван Петров
Иван Сидоров
Пётр Иванов
Пётр Михайлов

При помощи запроса "SELECT DISTINCT name FROM people" вы выбрали уникальные значения name:
name
----
Иван
Пётр

Какой результат, в вашем представлении, должен получиться, если "к первоначальному запросу добавить выборку полей surname (уникальности от них не требуется, просто перечислить при выборке)"?
23 апр 13, 11:59    [14217505]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Гость333
Какой результат, ..?

Зря фамилии по алфавиту отсортировали, это затруднит рождение истины.
23 апр 13, 12:29    [14217693]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выборкой уникальных значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
ambarka_max
Гость333
Какой результат, ..?

Зря фамилии по алфавиту отсортировали, это затруднит рождение истины.
Что-то уже и воды отошли,
а всё никак не родится! :((
23 апр 13, 12:37    [14217766]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить