powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / помогите с подзапросом
16 сообщений из 16, страница 1 из 1
помогите с подзапросом
    #35519492
nikolaich2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть запрос в предложении WHERE которого происходит сравнение поля таблицы с подзапросом. Читал, что в этой ситуации вместо = следует применять IN. А какой оператор необходимо поставить вместо >(<)?
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35519502
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolaich2 wrote:

> Есть запрос в предложении WHERE которого происходит сравнение поля
> таблицы с подзапросом. Читал, что в этой ситуации вместо = следует
> применять IN.

Можно =, можно IN. Вообще-то семантика у этих двух операций
разная, поэтому они не взаимозаменяемы.
Обе операции могут предварять подзапрос. Подзапросы
только в этих двух случаях должны быть разные :
для = должен возвращаться скаляр - одна строка и одно поле.
Для in - список из одного поля (набор данных, содержащий одно поле).

А какой оператор необходимо поставить вместо >(<)?

Никакой, > или <
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35519547
nikolaich2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv

А какой оператор необходимо поставить вместо >(<)?

Никакой, > или <


Если просто написать >, то запрос не работает. Пишет, что подзапрос возвращает больше одной строки. Если подставить IN, то все работает. Но мне как раз нужен эквивалент >.
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35519564
гость_0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда Вам imho нужен join, а не под запрос
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35519590
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivдля = должен возвращаться скаляр - одна строка и одно поле.
Для in - список из одного поля (набор данных, содержащий одно поле).в постгресе при проверке на ><= должна возвращаться одна строка, которая может содержать более одного поля. аналогично для IN - набор строк, которые могут содержать более одного поля

Код: plaintext
1.
2.
3.
4.
nalbat=> select ( 1 , 2 )=( select  1 , 2  );
 ?column?
----------
 t
( 1  row)

nikolaich2Если просто написать >, то запрос не работает. Пишет, что подзапрос возвращает больше одной строки. Если подставить IN, то все работает. Но мне как раз нужен эквивалент >.или изменить подзапрос, чтобы он гарантированно возвращал не более одной строки. или уточнить задачу, надо ли чтобы условие > выполнялось а) для каждой строки из подзапроса, или б) для некоторой строки из подзапроса.
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35519688
nikolaich2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил написать View и его использовать вместо подзапроса.
Все работает.
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35519882
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolaich2 wrote:

> Если просто написать >, то запрос не работает. Пишет, что подзапрос
> возвращает больше одной строки. Если подставить IN, то все работает. Но
> мне как раз нужен эквивалент >.

Так надо просто уметь запросы писать. Вы, видимо, не умеете.
Я в общем попытался написать, как надо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35519886
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBat wrote:

> в постгресе при проверке на ><= должна возвращаться одна строка, которая
> может содержать более одного поля. аналогично для IN - набор строк,

Видимо, тут описка. должно быть "которая НЕ МОЖЕТ содержать более одного поля".

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35519931
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВидимо, тут описка. должно быть "которая НЕ МОЖЕТ содержать более одного поля".описки нет. строка МОЖЕТ содержать больше одного поля.
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35520001
nikolaich2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
nikolaich2 wrote:

> Если просто написать >, то запрос не работает. Пишет, что подзапрос
> возвращает больше одной строки. Если подставить IN, то все работает. Но
> мне как раз нужен эквивалент >.

Так надо просто уметь запросы писать. Вы, видимо, не умеете.
Я в общем попытался написать, как надо.

Вы наверное не обратили внимание, что замена знака > на IN приводит к тому, что запрос работает, но естественно возвращает не тот набор данных, который нужен мне. Т.е. я меняю всего один оператор, и это приводит к тому, что запрос перестает работать. Исходя из этого я и предположил, что по аналогии с заменой = на IN, необходимо > менять на какой-либо другой оператор. Хотя возможно я и ошибаюсь.
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35520181
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolaich2 wrote:

> Вы наверное не обратили внимание, что замена знака > на IN приводит к
> тому, что запрос работает, но естественно возвращает не тот набор
> данных, который нужен мне.

почему же ? Я это прекрасно понимаю.

Т.е. я меняю всего один оператор, и это
> приводит к тому, что запрос перестает работать. Исходя из этого я и
> предположил, что по аналогии с заменой = на IN, необходимо > менять на
> какой-либо другой оператор. Хотя возможно я и ошибаюсь.

Нет, не обязательно. Но видимо я понял, что вам нужно.
Это выгдялит как

Код: plaintext
1.
2.
3.
where
....
   and some_field > some ( select ... from ....)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35520294
nikolaich2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv

Нет, не обязательно. Но видимо я понял, что вам нужно.
Это выгдялит как

Код: plaintext
1.
2.
3.
where
....
   and some_field > some ( select ... from ....)


Да. Это именно то что я хотел. Все работает. Большое спасибо.
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35521816
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exists по идее тоже должен работать....
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35521831
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_serg wrote:

> exists по идее тоже должен работать....

Конечно, но человеку зачем-то надо было именно >.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35521851
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вроде не нужно, он просто прочитал об этом (in и подзапросы) но, видимо, в источнике просто забыли, что можно использовать exists
впрочем не важно, я лишь хотел сказать автору, что существует еще один вариант
...
Рейтинг: 0 / 0
помогите с подзапросом
    #35523367
nikolaich2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
st_sergда вроде не нужно, он просто прочитал об этом (in и подзапросы) но, видимо, в источнике просто забыли, что можно использовать exists
впрочем не важно, я лишь хотел сказать автору, что существует еще один вариант

Все проще. Знаний мало, с английским полохо. В этой ситуации искать альтернативные решения, для ситуации о которой я задавал вопрос сложно. Вот и решил работать в том направлении, которое на тот момент мне казалось предпочтительным.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / помогите с подзапросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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