Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Distinct по одному полю из выборки / 15 сообщений из 15, страница 1 из 1
12.07.2018, 23:01
    #39673408
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
Добрый день. Делаю запрос:
Код: sql
1.
2.
3.
select STUDY_SHOW_CODE, STUDY_SOURCE from studies, series, images
where (Study_UID = 25339 or Study_UID = 25340 or Study_UID = 25343)
and studies.study_uid = series.study_uid and series.series_uid = images.series_uid


Необходимо, что бы в результате получилось три записи, согласно фильтра (Study_UID = 25339 or Study_UID = 25340 or Study_UID = 25343). По понятным причинам, из-за объединения, записей получается намного больше - по количеству series и images в studies. Простого добавления distinct недостаточно тоже по понятным причинам - данные разные. Как сделать distinct только по одному полю? Надежнее всего по первичному ключу таблицы studies - study_uid. Версия Firebird - 2.0.
...
Рейтинг: 0 / 0
12.07.2018, 23:04
    #39673409
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
makhaon> из-за объединения, записей получается намного больше
makhaon> Простого добавления distinct недостаточно - данные разные.

Чушь какая-то. Приведи данные, с которыми distinct возвращает
нежелательный результат, и какой результат нужен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.07.2018, 23:31
    #39673414
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
Гаджимурадов Рустам,

извиняюсь, уточняю запрос:

Код: sql
1.
2.
select STUDY_SHOW_CODE, STUDY_SOURCE, images.image_path from studies, series, images where (Study_UID = 25339 or Study_UID = 25340 or Study_UID = 25343)
and studies.study_uid = series.study_uid and series.series_uid = images.series_uid



Из-за того, что извлекается поле из images и данные разные.
...
Рейтинг: 0 / 0
12.07.2018, 23:37
    #39673417
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
И? images.image_path даёт несколько разных значений
для кортежей STUDY_SHOW_CODE, STUDY_SOURCE?
Если да, то какое из них нужно выбрать?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.07.2018, 23:51
    #39673425
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
Гаджимурадов Рустам,

любое. цель - в результате запроса получить любые три записи различные по study_uid
...
Рейтинг: 0 / 0
13.07.2018, 00:01
    #39673432
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
  st.study_show_code,
  st.study_source,
  min(i.image_path)
from studies st
  join series se on (st.study_uid = se.study_uid)
  join images i on (se.series_uid = i.series_uid)
where st.Study_UID in (25339, 25340, 25343)
group by 1, 2



или

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select
  s.study_show_code,
  st.study_source,
  (select first 1 i.image_path
      from series se on (st.study_uid = se.study_uid
      join images i on (se.series_uid = i.series_uid))
from studies st
where st.Study_UID in (25339, 25340, 25343)


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.07.2018, 00:22
    #39673441
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
Гаджимурадов Рустам,

Большое спасибо! Попробую, отпишусь.
...
Рейтинг: 0 / 0
13.07.2018, 03:06
    #39673458
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
makhaon,

первый способ выдал то, что нужно. еще раз спасибо.
...
Рейтинг: 0 / 0
13.07.2018, 03:28
    #39673461
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
А второй неправильный что ли?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.07.2018, 11:02
    #39673573
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
Гаджимурадов Рустам,

Второй не работает, увы:

Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 5, column 22.
on.

(первый 'on')
...
Рейтинг: 0 / 0
13.07.2018, 11:14
    #39673580
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
makhaon,

там скобка не закрыта, и вообще внутренние скобки лишние.
...
Рейтинг: 0 / 0
13.07.2018, 11:15
    #39673581
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
makhaon,

тьфу, там еще и join криво написан.
...
Рейтинг: 0 / 0
13.07.2018, 11:19
    #39673585
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
makhaonГаджимурадов Рустам,

Второй не работает, увы:

Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 5, column 22.
on.

(первый 'on')

замени
Код: sql
1.
2.
3.
  (select first 1 i.image_path
      from series se on (st.study_uid = se.study_uid
      join images i on (se.series_uid = i.series_uid))

на
Код: sql
1.
2.
3.
4.
  (select first 1 i.image_path
      from series se 
      join images i on se.series_uid = i.series_uid
    where  se.study_uid=st.study_uid)
...
Рейтинг: 0 / 0
13.07.2018, 18:29
    #39673865
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
makhaon> Второй не работает, увы:

Ны ту как маленький... :)
Мог бы и сам исправить издержки копипаста -
выше m7m уже дал исправленный вариант,
сравни его план с планом первого варианта.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.07.2018, 12:41
    #39673979
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct по одному полю из выборки
Гаджимурадов Рустам, kdv,
пытался исправить, но результат получился плохой. с твоим, kdv, результат получился как нужно и по производительности база лучше отработала, images перестал перебираться. спасибо, поменяю.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Distinct по одному полю из выборки / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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