У меня есть две таблицы. Первая таблица выглядит так:
Таблица :Записи
rid | user id | title | whenadded | public -------------------------------------------------------------------- 1 212 Example 2012-06-28 1 2 217 Test Rec 2012-07-05 1 3 212 Another 2012-07-02 1 4 212 Unlisted 2012-05-02 0 5 217 Success 2012-04-08 1 6 238 Always 2012-04-18 1
Таблица :Нравится
id | user id | rid | whenliked ------------------------------------------------------ 1 212 2 2012-07-06 2 205 1 2012-06-30 3 212 5 2012-07-04
В таблице «Записи» «рид» установлен в качестве основного индекса. В таблице «Нравится» id устанавливается в качестве основного индекса.
Я использую PHP. PHP предоставит MySQL значение для использования в качестве эталона.Я хотел бы иметь один запрос MySQL, который будет делать следующее:
Псевдокод:
$userid = 212;
$SQL = 'SELECT DISTINCT records.*
FROM records,likes
WHERE (records.userid = '. $userid.
' AND records.public = 1)
OR (records.id = likes.rid AND likes.userid = '. $userid.
' AND records.public = 1)
ORDER BY likes.whenliked DESC, records.whenadded DESC
LIMIT 50;';
Посмотрите на запрос $SQL, который я только что предоставил выше. Это моя попытка разработать запрос, который я хотел, но он не дал того, что я искал; это было чертовски близко, но все еще неправильно. Запрос был разработан настолько хорошо, насколько я мог, сначала самостоятельно, а затем на основе того, что я нашел, ища решение в StackFlow и в других местах в Google.
Это условия, по которым я пытаюсь заказать:
Конечный результат возвращаемого запроса будет выглядеть следующим образом (имейте в виду, что whenliked НЕ находится в возвращаемых данных, он просто для справки, чтобы вы видели, как он упорядочен):
rid | user id | title | whenadded | public | whenliked {not incl} ------------------------------------------------------------------------------------ 2 217 Test Rec 2012-07-05 1 2012-07-06 3 212 Another 2012-07-02 1 5 217 Success 2012-04-08 1 2012-06-30 1 212 Example 2012-06-28 1
Надеюсь, это имеет смысл. Не стесняйтесь задавать вопросы, я объясню, насколько смогу.
Заранее спасибо за ваше время, внимание и за то, что прочитали это. Даже если ответа нет или решение не найдено, ваше время все равно очень ценится!:)