Две таблицы, отсортированные по количеству строк;объединить? - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть две таблицы, для этого примера я буду называть их «контент» и «лайки».«Содержимое» содержит несколько записей (каждая, например, известная цитата или что-то в этом роде).

Сайт позволяет пользователям нажимать кнопку «Мне нравится», и поэтому запись вставляется в таблицу «лайков» ссоответствующий идентификатор из таблицы «content», чтобы его можно было отследить.

Я хочу написать запрос, который сортирует содержимое таблицы «content» по количеству лайков в таблице «likes»- это возможно?Если так, то как?

Большое спасибо и счастливых праздников (вторая часть применяется, даже если проблема остается нерешенной)

Ответы [ 3 ]

1 голос
/ 26 декабря 2011

Что-то вроде:

SELECT c.*
  FROM Content c, Likes l
 WHERE c.Content_Id = l.Content_Id
 GROUP BY c.Content_Id
 ORDER BY COUNT(*) DESC
1 голос
/ 26 декабря 2011

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

Таким образом, такого запроса будет достаточно:

SELECT quote FROM content ORDER BY likes DESC;

Это создает избыточность, но не совсем. Просто альтернатива для рассмотрения.

1 голос
/ 26 декабря 2011

Да, можно написать такой запрос.

SELECT count(*) as total, content.*
FROM content, likes
WHERE content.id = likes.id
GROUP BY total
ORDER BY total desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...