Есть 3 таблицы: authors: id name books: id title author_books: author_id book_id Задача: выбрать 2-х авторов, которые чаще всего работали вместе ( над одной книгой ).
выбрать все id авторов. Затем (рекурсивно?) выбирать из таблицы author_books пересечения с другими авторами. Код (Text): SELECT author_id FROM author_book WHERE book_id IN ( SELECT book_id FROM author_book WHERE author_id = @author) and author_id != @author GROUP BY author_id ORDER BY DESC и вот как-то это обернуть в рекурсию и в итоге получить 2 и более строк у которых будет одинаковое число совместных книг... Не получается описать в sql, да и в мыслях как-то сумбурно )
Ты что, хочешь одним запросом это получить?))) это нереал имхо. Тут надо городить кучу php-кода. --- Добавлено --- пока что в голову приходит одна шизофрения на костылях)) утром надо будет подумать. Задача очень интересная...
Код (Text): SELECT ab1.id_author, ab2.id_author, COUNT(*) FROM books b INNER JOIN author_books ab1 ON ab1.id_book = b.id INNER JOIN author_books ab2 ON ab2.id_book = b.id WHERE ab1.id_author <> ab2.id_author GROUP BY ab1.id_author, ab2.id_author ORDER BY 3 DESC LIMIT 1
Каждый раз, когда такое приходит в голову, сразу вспоминай о JOIN-ах. Это вот верный признак, что без них никак.
@Drema таблица books в запросе избыточна решение подойдет только для случая, когда при наличии несколько комбинаций авторов чаще всего работавших вместе, нужно выбрать только 1 случайную.