Вернуться   ИнформКлуб - то, что надо! > Научись и научи! > Web программирование > MySQL


Comment
 
Tutorial Tools Опции просмотра
Рекомендуемые Учебники
Экономичная выборка данных в MySql

Экономичная выборка данных в MySql

Опубликовал(а) Gostemilov
30.08.2017
По умолчанию Экономичная выборка данных в MySql

Имеется база данных:

CREATE TABLE authors
(
id serial NOT NULL,
name varchar(64) NOT NULL,
CONSTRAINT "pk authors" PRIMARY KEY (id)
);

CREATE TABLE books
(
id serial NOT NULL,
author_id int NOT NULL,
name varchar(255) NOT NULL,
published timestamp without time zone NULL, - если NULL, то книга еще не издана.
CONSTRAINT "pk books" PRIMARY KEY (id),
CONSTRAINT "fk books/authors"
FOREIGN KEY (author_id)
REFERENCES authors (id) ON UPDATE CASCADE ON DELETE CASCADE
);

CREATE UNIQUE INDEX "ix books" ON books (author_id, published);



+--------------------------------------------------------------------- ----------+
Надо вывести: | имя автора | название последней изданной книги | дата издания последней книги |
+--------------------------------------------------------------------- ----------+


То есть, написать запрос, который выводит всех авторов, у которых ИЗДАНО более двух книг и показать
последнюю изданную книгу каждого автора и дату ее издания.
Предполагается, что таблицы огромные, поэтому запрос ДОЛЖЕН быть максимально экономичным.

SELECT a.name, b.name, b.published
FROM books b
INNER JOIN
(
SELECT author_id, MAX(published) as published
FROM books
WHERE published IS NOT NULL
GROUP BY author_id
HAVING COUNT(id) > 2
) as x
ON x.author_id = b.author_id
AND x.published = b.published
INNER JOIN
authors a
ON a.id = x.author_id;


Информация
Источник
skillz.ru/dev/php/ar...

Tutorial Tools

Comment

Tutorial Tools
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 19:17. Часовой пояс GMT.


Почитать

Анекдоты
Афоризмы
Поговорки
Пословицы
Форум
Цитатник

Посмотреть

Галерея PNG клипарта
Галерея бесшовных фонов

Скачать

Файловый архив
Скрипты
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, vBulletin Solutions, Inc. Перевод: zCarot