MySQL JOIN на основе поля сортировщика - PullRequest
0 голосов
/ 19 августа 2011

У меня есть база данных с несколькими users, каждая из которых может иметь несколько books.

Я хочу получить список пользователей и их первую книгу, основанную на поле (Integer) sortorder втаблица book.

Ниже приведен пример SQL, который я сейчас использую.Единственная проблема заключается в том, что он не возвращает первую книгу на основе поля sortorder для каждого пользователя.

SELECT
    b.id, b.user_id, b.sortorder, b.title
FROM
    books AS b
JOIN
    books_categories AS bc
ON
    (b.id =  bc.book_id)
JOIN
    categories AS c
ON
    (c.id =  bc.category_id)
JOIN
    users AS u
ON
    (u.id =  b.user_id)
GROUP BY
    b.user_id

1 Ответ

2 голосов
/ 19 августа 2011

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

SELECT b.id, b.user_id, b.sortorder, b.title
FROM books b
JOIN (
    SELECT b2.user_id, min(b2.sortorder) sortorder
    FROM books b2
    GROUP BY b2.user_id
) first_books USING (user_id, sortorder); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...