Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка по дате 
:(
    Опции темы
Shar
Дата 29.10.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 24.3.2009

Репутация: нет
Всего: нет



Проблема такая: есть таблица авторов с полями
id автоинкремент
name
info

и таблица книг с полями
id
title
idavtor - связь по этому полю
pubdate - дата выхода книги

Нужно вывести табличку где строка состоит из имени автора и названием книги вышедшей у него последней.

Пишу конструкцию такую 
Код

SELECT * FROM books,avtors
            WHERE idavtor=id and pubdate=(
            SELECT pubdate FROM books ORDER BY pubdate DESC LIMIT 0,1
            )


Но она мне выдает автора у которого самая недавняя дата выпуска, сами понимаете не то.

Помогите пожалуйста
PM MAIL   Вверх
Zloxa
Дата 29.10.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(Shar @  29.10.2009,  12:24 Найти цитируемый пост)
Нужно вывести табличку где строка состоит из имени автора и названием книги вышедшей у него последней.

?
Код

select avtors.name
   ,(select title from  books where idavtor= avtors.id order by pubdate  desc limit 1) title 
from avtors



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Shar
Дата 29.10.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 24.3.2009

Репутация: нет
Всего: нет



Объясните пожалуйста что эта чать запроса означает
Код

(select title from  books where idavtor= avtors.id order by pubdate  desc limit 1) title 

PM MAIL   Вверх
Zloxa
Дата 29.10.2009, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(Shar @  29.10.2009,  12:36 Найти цитируемый пост)
Объясните пожалуйста что эта чать запроса означает

выбрать поле title таблицы books для которого idavtor равен значениею id таблицы avtors, ограничить выборку одной записью с сортировкой в обратном порядке по pubdate



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Shar
Дата 29.10.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 24.3.2009

Репутация: нет
Всего: нет



Ага ясно, а как выбрать несколько полей кроме title из таблицы books, например если добавить туда поле издательство
PM MAIL   Вверх
Shar
Дата 29.10.2009, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 24.3.2009

Репутация: нет
Всего: нет



Добавляю в запрос еще одно поле например izdat, запрос не выполяется
PM MAIL   Вверх
Zloxa
Дата 29.10.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(Shar @  29.10.2009,  13:04 Найти цитируемый пост)
Добавляю в запрос еще одно поле например izdat, запрос не выполяется 

Ну я как бы специально процитировал вопрос, потому как я давал ответ именно на него.
Добавление еще одного поля - измненение начальных условий и ответ на него уже другой.

Это сообщение отредактировал(а) Zloxa - 29.10.2009, 13:14


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Zloxa
Дата 29.10.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Код

select s.*
  , books.*
from(
  select avtors.*
     ,(select books.id from  books where idavtor= avtors.id order by pubdate  desc limit 1) book_id
  from avtors
)s
left join books on books.id = s.book_id


Код

select avtors.*
     ,books.*
from avtors
left join (select max(pubdate) maxpubdate, idavtor from books group by idavtor) s on s.idavtor = avtors.id
left join books on books. idavtor = s. idavtor and books. pubdate = s. maxpubdate


STFF Бабушкин метод

PS Все приведенные примеры работоспособны лишь в случае, если пара books(idavtor,pubdate)  - уникальна


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Shar
Дата 29.10.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 24.3.2009

Репутация: нет
Всего: нет



Цитата(Zloxa @  29.10.2009,  13:29 Найти цитируемый пост)
Все приведенные примеры работоспособны лишь в случае, если пара books(idavtor,pubdate)  - уникальна


Пара уникальна, но запрос не срабатывает smile 
PM MAIL   Вверх
Zloxa
Дата 29.10.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(Shar @  29.10.2009,  14:04 Найти цитируемый пост)
запрос не срабатывает 

да ты што! smile 

Это сообщение отредактировал(а) Zloxa - 29.10.2009, 14:14


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Shar
Дата 29.10.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 24.3.2009

Репутация: нет
Всего: нет



Ну я сначала пробовал 2 вариант, что то не вышло, а первый вариант заработал, огромное спасибо. Где бы еще почитать о том как такие сложные запросы делать, логику понять было бы вообще замечательно.
PM MAIL   Вверх
Zloxa
Дата 29.10.2009, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(Shar @  29.10.2009,  14:27 Найти цитируемый пост)
что то не вышло

Да ты што! smile 

Под "Да ты што" подразумевается "Приведите пожалуйста код и текст ошибки, который вы подразумеваете под "чтото не вышло""


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.