powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Distinct по одному полю из выборки
15 сообщений из 15, страница 1 из 1
Distinct по одному полю из выборки
    #39673408
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Делаю запрос:
Код: 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
Distinct по одному полю из выборки
    #39673409
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon> из-за объединения, записей получается намного больше
makhaon> Простого добавления distinct недостаточно - данные разные.

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

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

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

любое. цель - в результате запроса получить любые три записи различные по study_uid
...
Рейтинг: 0 / 0
Distinct по одному полю из выборки
    #39673432
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Distinct по одному полю из выборки
    #39673441
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

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

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

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

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

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

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

тьфу, там еще и join криво написан.
...
Рейтинг: 0 / 0
Distinct по одному полю из выборки
    #39673585
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Distinct по одному полю из выборки
    #39673865
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon> Второй не работает, увы:

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


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