Как вы ограничиваете составные записи в MYSQL? - PullRequest
3 голосов
/ 12 февраля 2010

Я работаю с MYSQL уже несколько лет, и я часто задаюсь вопросом об этой проблеме, но до сих пор не удосужился ее изучить. Так что здесь идет. Допустим, у меня есть таблица авторов и таблица книг. В каждой книге есть поле для ссылки на автора.

Теперь, допустим, я хочу получить автора и его книги в одном наборе.

SELECT * FROM authors, books WHERE books.author = authors.id

Пока проблем нет. Теперь о хитрой части: как мне получить, скажем, 5 авторов и его книги?

если я сделаю:

SELECT * FROM authors, books WHERE books.author = authors.id LIMIT 5

Я просто получу первые 5 книг, связанных с одним автором.

Это достаточно ясно? Можно ли это сделать в MYSQL или я должен прибегнуть к этому в коде (что я не хочу делать)?

Большое спасибо!

1 Ответ

4 голосов
/ 12 февраля 2010

Использовать подзапрос:

SELECT *
FROM (SELECT * FROM authors LIMIT 5) AS authors, books
WHERE books.author = authors.id

Подробнее о подзапросах в предложении FROM читайте здесь: http://dev.mysql.com/doc/refman/5.0/en/unnamed-views.html

...