SQL-запрос сортировать по count () из другой таблицы

0

Я выполняю запрос ajax, используя таблицу начальной загрузки jQuery... Используя следующий запрос для извлечения списка веб-сайтов:

SELECT * 
FROM websites 
WHERE (name LIKE '%xx%' OR url LIKE '%xx%' OR country LIKE '%xx%') 
ORDER BY id desc 
LIMIT 0,10

Мне нужно иметь возможность сортировать веб-сайты по количеству статей, которые каждый сайт имеет в таблице, называемой статьями (включая предложение WHERE) по возрастанию или по убыванию, если требуется. Я могу получить счет, используя следующие запросы:

SELECT * 
FROM articles 
WHERE website_url='$url' 
AND DATE(date_inserted) = CURRENT_DATE 
AND is_valid='1'

SELECT * 
FROM articles 
WHERE website_url='$url' 
AND is_valid='1'

Обе таблицы имеют общее поле, которое можно использовать для сопоставления: в таблице веб-сайтов он называется "url", а в таблице статей он называется "website_url",

Также обратите внимание, что мне нужно получить ограниченное количество сайтов за раз, но результат должен быть отсортирован в соответствии со всеми строками, присутствующими в таблице.

Любая помощь будет оценена по достоинству.

Я не знаю, как построить требуемый запрос.

Скрипт: https://www.db-fiddle.com/#&togetherjs=4UG71ov2Jz

  • 1
    Вопросы о MySQL должны, по крайней мере, включать SHOW CREATE TABLE [table] для каждой задействованной таблицы и пример данных в виде таблицы данных ascii, но лучше всего предоставить sqlfiddle.com или db-fiddle.com ... Также таблица данных ascii с ожидаемым результат также удобен .. Таким образом, мы можем лучше помочь вам
  • 0
    @RaymondNijland, вы должны сделать свой комментарий более общим. не только MySQL нуждаются в них.
Показать ещё 3 комментария
Теги:

1 ответ

0
Лучший ответ

Попробуй это:

SELECT w.*
  FROM websites w
  LEFT OUTER JOIN (SELECT website_url, COUNT(*) as num_articles
                     FROM articles
                    WHERE is_valid='1'
                    GROUP BY website_url) a
    ON a.website_url = w.url
 WHERE (w.name LIKE '%xx%' OR w.url LIKE '%xx%' OR w.country LIKE '%xx%')
 ORDER BY a.num_articles DESC
 LIMIT 0,10
  • 0
    Извините, в таблице веб-сайтов общее поле называется url, а не website_url. Я исправил это.
  • 0
    @ITFreak обновлен. Попробуй это сейчас
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню