Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Нужна помощь в составлении запроса

Ответить
Настройки темы
MySQL - [решено] Нужна помощь в составлении запроса

Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте уважаемые форумчане.

Как реализовать следующее: в бд у меня есть н-ое количество новостей, новости постоянно добавляются. У меня есть 2 блока, которые выводят эти новости.
Например: {block1} выводит 1 новость, последнюю в базе, а {block2} выводит остальные новости, например 5, но так как запрос и структура одинаковые, получается следующее:

++ Новость 1, уникально оформленная

= новость 1 (которую нужно убрать)
= новость 2
= новость 3
= новость 4
и т.д.

Теперь вопрос: как сделать, чтобы второй блок выводил новости, но не с первой, а, например, со второй или третей???
т.е. какой запрос нужно составить и в эту ли ветку я написал?

Заранее очень благодарю за помощь.
_________________

Отправлено: 01:20, 23-03-2009

 

Аватара для Delirium

Ветеран


Сообщения: 5625
Благодарности: 935

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
select top 5 id_news, news_text from news 
where id_news <>(select max(id_news) from news)
order by id_news desc
если, к примеру в базе 17 записей, то запрос вернет 16,15,14,13,12 записи.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:48, 23-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата Delirium:
Код:
select top 5 id_news, news_text from news
where id_news <>(select max(id_news) from news)
order by id_news desc
если, к примеру в базе 17 записей, то запрос вернет 16,15,14,13,12 записи. »
Спасибо большое. Подскажите еще, как сделать, чтобы выводил не со второй записи, а с третей. Не могу понять по какому принципу сформировать запрос.

И еще раз благодарю за помощь.

Отправлено: 22:28, 23-03-2009 | #3


Аватара для Delirium

Ветеран


Сообщения: 5625
Благодарности: 935

Профиль | Отправить PM | Цитировать


Цитата KandaSoft:
Спасибо большое. Подскажите еще, как сделать, чтобы выводил не со второй записи, а с третей. Не могу понять по какому принципу сформировать запрос »
Код: Выделить весь код
select top 5 id_news, news_text from news 
where id_news not in (select top 2 id_news from news order by id_news desc)
order by id_news desc
В случае с моими 17 записями запрос вернул записи 11,12,13,14,15.

Кстати и предыдущий запрос можно переписать в таком же виде. Достаточно менять top 2 На нужное число, и он будет отбрасывать TOP N записей с конца таблицы.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:17, 24-03-2009 | #4


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
The Error returned was: You have an error in your SQL syntax; 

check the manual that corresponds to your MySQL server version for the right syntax to use near '5 id, title, date, alt_name, short_story, category, flag FROM news_post WHERE id ' at line 1 

Error Number: 1064

SELECT top 5 id, title, date, alt_name, short_story, category, flag 
FROM news_post 
WHERE id NOT IN (select top 2 id from news_post order by id desc) 
AND   approve='1' ORDER BY date
Вот, выдал ошибку...

Последний раз редактировалось KandaSoft, 26-03-2009 в 02:02.


Отправлено: 01:37, 26-03-2009 | #5


Аватара для Delirium

Ветеран


Сообщения: 5625
Благодарности: 935

Профиль | Отправить PM | Цитировать


KandaSoft, тогда проверяйте по порядку команды:

Код: Выделить весь код
select top 5 id, title, date, alt_name, short_story, category, flag FROM dle_post
Код: Выделить весь код
SELECT top 5 id, title, date, alt_name, short_story, category, flag 
FROM news_post
Код: Выделить весь код
select top 2 id from news_post order by id desc
Код: Выделить весь код
SELECT top 5 id, title, date, alt_name, short_story, category, flag 
FROM news_post 
WHERE id <> 1 AND   approve='1' 
ORDER BY date
Если на чем либо выдаст ошибку, сообщите

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:52, 26-03-2009 | #6


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Первый запрос:
Код: Выделить весь код
The Error returned was: 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5 id, title, date, alt_name, short_story, category, flag FROM news_post' at line 1 

Error Number: 
1064
Второй:
Код: Выделить весь код
The Error returned was: 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5 id, title, date, alt_name, short_story, category, flag FROM news_post' at line 1 

Error Number: 
1064
Третий:
Код: Выделить весь код
The Error returned was: 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2 id from dle_post order by id desc' at line 1 

Error Number: 
1064
И последний:
Код: Выделить весь код
The Error returned was: 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5 id, title, date, alt_name, short_story, category, flag FROM dle_post WHERE i' at line 1 

Error Number: 
1064
Как я понимаю, он не хочет воспринимать значение TOP.

Отправлено: 02:10, 26-03-2009 | #7


Аватара для Delirium

Ветеран


Сообщения: 5625
Благодарности: 935

Профиль | Отправить PM | Цитировать


Так, ясно, MySQL не знает что такое TOP, а я проверял на MS SQL.

Он знает такую структуру
Код: Выделить весь код
SELECT * FROM tbl LIMIT 0,10 
т.е вместо select top лалала надо написать

Код: Выделить весь код
select id_news, news_text from news LIMIT 0,10
where id_news not in (select top 2 id_news from news order by id_news desc)
order by id_news desc
или в другое место подставить LIMIT. Потестируйте.

Взято отсюда и отсюда

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 02:41, 26-03-2009 | #8


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Построил запрос следующим образом:
Код: Выделить весь код
SELECT id, title, date, alt_name, short_story, category, flag FROM news_post WHERE id NOT IN (select id, date from news_post order by date desc limit 0, 2 ) AND   approve='1' ORDER BY date desc limit 0,5
Но он выдал ошибку: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Версия MySQL: 5.0.45


limit не сочетается с in...
Тестирую на денвере.

=====================================

Все, разобрался. Спасибо за помощь и ссылки!

Нужно было просто в исходный запрос:

Код: Выделить весь код
SELECT id, title, date, alt_name, short_story, category, flag 
FROM news_post 
WHERE approve='1' 
ORDER BY date
Добавить в конец DESC LIMIT 0, 2

Где вместо 0 вставить с какой записи начинать выводить.

Последний раз редактировалось KandaSoft, 26-03-2009 в 03:04.


Отправлено: 02:54, 26-03-2009 | #9


Аватара для Delirium

Ветеран


Сообщения: 5625
Благодарности: 935

Профиль | Отправить PM | Цитировать


Во как, даже проще все оказалось, чем думали сначала Пометьте тему решенной

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:06, 26-03-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Нужна помощь в составлении запроса

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MSFT SQL Server - [решено] Помощь в написании SQL запроса для базы maxon-86 Программирование и базы данных 4 20-01-2010 09:17
[решено] Нужна помощь с логами ! M.A.M.A.H. Лечение систем от вредоносных программ 17 18-01-2010 04:13
[решено] нужна помощь программиста. foxbat Программирование в *nix 0 09-11-2009 13:45
Интернет - [решено] Нужна помощь по сети + интернет vavilon79 Microsoft Windows 2000/XP 3 25-10-2009 11:21
Теория - [решено] Необходима помощь в составлении списка положений или инструкции по разработке ПО Mystic Программирование и базы данных 1 05-01-2009 14:07




 
Переход