powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не работает запрос
20 сообщений из 20, страница 1 из 1
Не работает запрос
    #33541273
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой запрос

SELECT * FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua AND (news_date_ua BETWEEN current_date() ) ORDER BY sections.sort_id, news_date_ua DESC, news.sort_id LIMIT 7,0


При исполнении запроса возникает ошибка.
Я думаю, что ошибка AND (news_date_ua BETWEEN current_date() ) в этой части. Поля все указаны правильно, т.е. дело, вероятнее всего, в неправильности конструкций. Помогите пожалуйста!!!
...
Рейтинг: 0 / 0
Не работает запрос
    #33541313
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SaharokЕсть такой запрос

SELECT * FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua AND (news_date_ua BETWEEN current_date() ) ORDER BY sections.sort_id, news_date_ua DESC, news.sort_id LIMIT 7,0


При исполнении запроса возникает ошибка.
Я думаю, что ошибка AND (news_date_ua BETWEEN current_date() ) в этой части. Поля все указаны правильно, т.е. дело, вероятнее всего, в неправильности конструкций. Помогите пожалуйста!!!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT * 
FROM news,sections 
WHERE 
  news.sec_id=sections.sec_id AND 
  news.in_stock_ua AND 
  is_shown_ua AND 
  (news_date_ua>current_date() ) 
ORDER BY sections.sort_id, news_date_ua DESC, news.sort_id 
LIMIT  7  OFFSET  0 

Конструкция BETWEEN должна выглядеть так:
a BETWEEN x AND y
что эквивалентно
a >= x AND a <= y
...
Рейтинг: 0 / 0
Не работает запрос
    #33541334
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если сделать вот так

SELECT * FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua AND (news_date_ua < current_date() ) ORDER BY sections.sort_id, news_date_ua DESC, news.sort_id LIMIT 7,0


то выводиться новости с датами 2004 года... а идея заключается в том, что бы вытянуть последние записи. Помогите переписать условие!
...
Рейтинг: 0 / 0
Не работает запрос
    #33541529
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т. е.
в Mysql можно задать такой запрос

select * from table where date < "2006-02-13"

когда я пробую в таком же стиле сделать запрос на PostgreSQL, то выводиться совсем не то что я ожидаю.
например, такой запрос

SELECT * FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua AND news_date_ua > '01.01.2004' ORDER BY sections.sort_id, news_date_ua, news.sort_id LIMIT 7,0

выводит только одну запись, хотя таких записей минимум 50???
...
Рейтинг: 0 / 0
Не работает запрос
    #33541547
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
читаем на postgresql.org в разделе документации про функции работы с датой

mysql может делать все что угодно на то он и mysql

ЗЫ
а какой у Вас тип колонки news_date_ua
...
Рейтинг: 0 / 0
Не работает запрос
    #33541558
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
date
...
Рейтинг: 0 / 0
Не работает запрос
    #33541649
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Saharokт. е.
в Mysql можно задать такой запрос

select * from table where date < "2006-02-13"

когда я пробую в таком же стиле сделать запрос на PostgreSQL, то выводиться совсем не то что я ожидаю.

Этот запрос должен вернуть все записи с полем date меньшим "2006-02-13", впрочем если date будет распознано как служебное слово - тоды можно получить странный результат.

Saharok
например, такой запрос

SELECT * FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua AND news_date_ua > '01.01.2004' ORDER BY sections.sort_id, news_date_ua, news.sort_id LIMIT 7,0

выводит только одну запись, хотя таких записей минимум 50???

Я не могу понять что значит LIMIT 7,0 ?
В доке написано LIMIT a OFFSET b.
Можно попробовать написать
Код: plaintext
1.
2.
3.
ORDER BY 
  news_date_ua  DESC 
LIMIT  7 
...
Рейтинг: 0 / 0
Не работает запрос
    #33541678
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
без LIMIT выдает тот же результат... очень странно!!!
...
Рейтинг: 0 / 0
Не работает запрос
    #33541713
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Saharokбез LIMIT выдает тот же результат... очень странно!!!
Тот же это 1?
Тогда можно поробывать вообще без ORDER BY и LIMIT. Потом убрать и фильтры.
...
Рейтинг: 0 / 0
Не работает запрос
    #33541742
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я убирал все!!!
Постгрес как-то странно себя ведет... он даты выдает как ему хочеться,
поставлю
news_date_ua < current_date()

выдает максимум 30 запесей

А у меня в базе 500!!!! с 2002 по 2006 год!!!
...
Рейтинг: 0 / 0
Не работает запрос
    #33541825
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Saharokя убирал все!!!
Постгрес как-то странно себя ведет... он даты выдает как ему хочеться,
поставлю
news_date_ua < current_date()

выдает максимум 30 запесей

А у меня в базе 500!!!! с 2002 по 2006 год!!!
1. Перестаем кивать на постгрес. Уж что-что а ORDER BY и LIMIT в нем работают давно и корректно.
2. Чем смотрим данные? Например EMS PostgreSQL Manager показывает только первые n, что без сортировки может привести к разным забавным последствиям.
3. Версия и платформа ПостгреSQL.
4. Полные скрипты запросов - приветствуются.
5. Можно попробывать заменить current_date() на now.
...
Рейтинг: 0 / 0
Не работает запрос
    #33542655
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey Daeron
1. Перестаем кивать на постгрес. Уж что-что а ORDER BY и LIMIT в нем работают давно и корректно.
2. Чем смотрим данные? Например EMS PostgreSQL Manager показывает только первые n, что без сортировки может привести к разным забавным последствиям.
3. Версия и платформа ПостгреSQL.
4. Полные скрипты запросов - приветствуются.
5. Можно попробывать заменить current_date() на now.

Данные просматриваются pgAdmin 2, версия PostgreSQL 7.2.3 на платформе FreeBSD. Запрос, который выполняется
Код: plaintext
1.
SELECT * FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua AND (news_date_ua < now()) 

Он то выводит данные, но только частично, а точнее 57 из 500 , хотя я условий никаких уже не ставил. Для меня это странно
...
Рейтинг: 0 / 0
Не работает запрос
    #33543123
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Saharok Andrey Daeron
1. Перестаем кивать на постгрес. Уж что-что а ORDER BY и LIMIT в нем работают давно и корректно.
2. Чем смотрим данные? Например EMS PostgreSQL Manager показывает только первые n, что без сортировки может привести к разным забавным последствиям.
3. Версия и платформа ПостгреSQL.
4. Полные скрипты запросов - приветствуются.
5. Можно попробывать заменить current_date() на now.

Данные просматриваются pgAdmin 2, версия PostgreSQL 7.2.3 на платформе FreeBSD. Запрос, который выполняется
Код: plaintext
1.
SELECT * FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua AND (news_date_ua < now()) 

Он то выводит данные, но только частично, а точнее 57 из 500 , хотя я условий никаких уже не ставил. Для меня это странно
Мда-с. 7.2.3 это несколько старовато :( Но тем не менее.
А что говорят запросы:
Код: plaintext
1.
2.
3.
4.
5.
SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua AND (news_date_ua < now()) 

SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua 

SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua
...
Рейтинг: 0 / 0
Не работает запрос
    #33543375
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey Daeron
Мда-с. 7.2.3 это несколько старовато :( Но тем не менее.
А что говорят запросы:
Код: plaintext
1.
2.
3.
4.
5.
SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua AND (news_date_ua < now()) 

SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua 

SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua


Да, старовато, это рабочий сервер ... правило админа "работает - не трож :-)"
а выводит:
57
57
61
...
Рейтинг: 0 / 0
Не работает запрос
    #33543650
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Saharok Andrey Daeron
Мда-с. 7.2.3 это несколько старовато :( Но тем не менее.
А что говорят запросы:
Код: plaintext
1.
2.
3.
4.
5.
SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua AND (news_date_ua < now()) 

SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua AND is_shown_ua 

SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua


Да, старовато, это рабочий сервер ... правило админа "работает - не трож :-)"
а выводит:
57
57
61
Отлично!
Это значит что в БД таки реально 57 записей, теперь для окончательного диагноза:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id 

SELECT count(*) FROM news 

SELECT count(*) 
 FROM news 
 WHERE news.sec_id not in (SELECT sec_id FROM sections)
...
Рейтинг: 0 / 0
Не работает запрос
    #33543718
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey Daeron
Отлично!
Это значит что в БД таки реально 57 записей, теперь для окончательного диагноза:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id 

SELECT count(*) FROM news 

SELECT count(*) 
 FROM news 
 WHERE news.sec_id not in (SELECT sec_id FROM sections)


535
535
0
...
Рейтинг: 0 / 0
Не работает запрос
    #33544033
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Saharok Andrey Daeron
Отлично!
Это значит что в БД таки реально 57 записей, теперь для окончательного диагноза:
Код: plaintext
1.
2.
SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id 
 535 


Ну вот и все, для почти всех записей news.in_stock_ua = false ;) И постгрес ессно их не выводит:
Код: plaintext
1.
SELECT count(*) FROM news,sections WHERE news.sec_id=sections.sec_id AND news.in_stock_ua
57.

Для контрольного в голову:
Код: plaintext
1.
2.
SELECT count(*) FROM news WHERE not news.in_stock_ua
SELECT count(*) FROM news WHERE news.in_stock_ua
...
Рейтинг: 0 / 0
Не работает запрос
    #33544160
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
474
61

вы меня, конечно, извините за не знания синтаксиса постгреса :-), но подскажите тогда как сформировать запрос, который будет выбирать из этой базы 7 последних записей.
...
Рейтинг: 0 / 0
Не работает запрос
    #33544335
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Saharok474
61

вы меня, конечно, извините за не знания синтаксиса постгреса :-), но подскажите тогда как сформировать запрос, который будет выбирать из этой базы 7 последних записей.
Код: plaintext
1.
2.
3.
4.
5.
SELECT * FROM news,sections 
 WHERE 
   news.sec_id=sections.sec_id AND 
   is_shown_ua
    ORDER BY news_date_ua DESC LIMIT  7 
Я убрал news.sort_id - непонятно зачем нужна и условие news.in_stock_ua - именно тот признак который портит жизнь. Их назначение и присваивание - нужно смотреть в логике программы.
...
Рейтинг: 0 / 0
Не работает запрос
    #33544570
Saharok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не работает запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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