![]() |
|
Модераторы: skyboy |
![]()
|
|
| nickcore |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 25.3.2009 Репутация: нет Всего: нет |
Всем привет!
Я новичок в составлении sql-запросов. и у меня не получается сделать следующее. Дана таблица foo с полями id, автор, сообщение, время:
Мне нужно написать запрос, который выведет два последних опубликованных сообщения (а так же его автора и время публикации), причём сообщения должны быть от разных авторов. Спасибо. Это сообщение отредактировал(а) skyboy - 25.3.2009, 18:58 |
|||
|
||||
| nickcore |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 25.3.2009 Репутация: нет Всего: нет |
такой запрос вроде как подходит
SELECT author, message, timestamp FROM foo WHERE author !=(SELECT author FROM foo ORDER BY id DESC LIMIT 0,1) OR id=(SELECT id FROM foo ORDER BY id DESC LIMIT 0,1) ORDER BY id DESC LIMIT 0,2; Но.... наверняка есть более подходящий способ |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
-------------------- Слава Україні! |
|||
|
||||
| nickcore |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 25.3.2009 Репутация: нет Всего: нет |
Gluttton, твой запрос не подходит
|
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Ошибка? Не верные данные возвращает? Или вообще не подходит?
СУБД какая? -------------------- Слава Україні! |
|||
|
||||
| nickcore |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 25.3.2009 Репутация: нет Всего: нет |
СУБД MySQL. Запрос возвращает 4 записи
|
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Надо же, странно, что он вообще работает
А один и тот же автор, может создавать несколько сообщений в одно и то же время? -------------------- Слава Україні! |
|||
|
||||
| nickcore |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 25.3.2009 Репутация: нет Всего: нет |
Нет. я думаю практически это невозможно
|
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Практически то оно может быть и невозможно, а вот БД не воспрещает этого Уж больно мне любопытно, почему запрос возвращает 4 записи? Запрос постноен на предположении, что комбинации author и timestamp не повторяються... Вот я испрашиваю... Если не сложно, покажи записи, которые возвращает запрос? -------------------- Слава Україні! |
|||
|
||||
| nickcore |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 25.3.2009 Репутация: нет Всего: нет |
пример таблицы
+----+--------+----------------+-----------+ | id | author | message | timestamp | +----+--------+----------------+-----------+ | 11 | nick | nicks message | 1 | | 12 | nick | nicks message | 2 | | 13 | nick | nicks message3 | 3 | | 14 | jane | janes message | 4 | | 15 | jane | janes message2 | 5 | | 16 | bob | bobs message | 6 | | 17 | bob | bobs message2 | 7 | +----+--------+----------------+-----------+ 7 rows in set (0.00 sec) результаты запроса +----------------+--------+-----------+ | message | author | timestamp | +----------------+--------+-----------+ | bobs message2 | bob | 7 | | janes message2 | jane | 5 | | nicks message3 | nick | 3 | +----------------+--------+-----------+ 3 rows in set (0.00 sec) а вообще вот запрос, по моему наиболее простой для данной задачи
Это сообщение отредактировал(а) nickcore - 26.3.2009, 14:22 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Это три а не четыре строки Вместо <=2 напиши <2 потому ка для первой записи будет 0 предшественников, для второй 1 предшественник. Этот запрос, в отличии варианта, предложенного Gluttton вернет вам ЛЮБЫЕ message этого автора, не обязательно соответствующие наибольшему timestamp: Вариант от Gluttton можно слегка откоректировать (поправьте меня знатоки MySql, если допущу ошибку):
Это сообщение отредактировал(а) Zloxa - 26.3.2009, 15:13 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Gluttton |
|
||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
To nickcore
To Zloxa
-------------------- Слава Україні! |
||||||
|
|||||||
| nickcore |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 25.3.2009 Репутация: нет Всего: нет |
согласен запрос невсегда будет срабатывать. но все же вот как мне кажется более простой запрос
Спасибо огромное за помощь. буду дальше в скул врубаться..... |
||||
|
|||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: нет Всего: 40 |
А почему вы хотите все это выбрать именно 1 запросом? Двумя то проще. И почти наверняка быстрее (проще план выполнения). Что то типа
-------------------- Бонифаций. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |