Arris
@Arris
Сапиенсы учатся, играя.

"Простой" запрос MySQL, как его составить?

Хороших выходных, коллеги!

Есть 2 таблицы:
CREATE TABLE `articles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `book` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `books` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` char(80) DEFAULT NULL,
  `year` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

articles.book соответственно принадлежность статьи к определенному сборнику (по id)

Пытаюсь составить запрос, который должен возвращать строки вида:
books.id     books.title     books.year     <количество статей в этом сборнике>


Замученный моск дальше "очевидного":
SELECT books.id, books.title, books.year COUNT(articles.book) FROM books, articles 
WHERE articles.book = books.id

не уходит, а возвращает этот запрос ровно 1 строку.

В базе сборников несколько, годов естественно тоже несколько.
ЧЯДНТ?
  • Вопрос задан
  • 2815 просмотров
Решения вопроса 1
Попробуй такой запрос:

SELECT books.id, books.title, books.year, COUNT(articles.book)
FROM books, articles
WHERE articles.book = books.id
GROUP BY books.id, books.title, books.year


А такой запрос должен вывести все книги, даже если нет articles:

SELECT books.id, books.title, books.year, COUNT(articles.book)
FROM books LEFT JOIN articles ON books.id=articles.book
GROUP BY books.id, books.title, books.year


А ещё лучше зайти на www.sql-ex.ru и по тренироваться в создании запросов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
akashtrih
@akashtrih
По-моему ты хочешь странного. Несколько книг входит в сборник. Одна и та же книга может входить сразу в несколько сборников. Ты хочешь сделать запрос на получение данных о книге и информацию о сборнике (сколько в нем книг). Какой из сборников, в которых учавствует конкретная книга, выбрать и вернуть кол-во книг в нём? Первый попавшийся?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы