2013-07-30 4 views
0

У меня есть этот запрос, который работает отличноMysql GROUP BY в LEFT JOIN и ORDER BY

$query = "SELECT 
     beva_post.*, 
     CONVERT_TZ(beva_post.date_published, '-00:00', '+00:00') as moment, 
     beva_rubrique.titre_en, 
     beva_user.image_user 
     FROM beva_post 
     LEFT JOIN beva_user 
      ON beva_user.id_user = beva_post.id_user 
     LEFT JOIN beva_rubrique 
      ON beva_rubrique.id_rubrique = beva_post.id_rubrique 
     LEFT JOIN beva_post_like 
      ON beva_post_like.id_post = beva_post.id_post 
     WHERE beva_post.id_user != '' 
     AND beva_post.flag = 'true' "; 
$query .= "ORDER BY beva_post.id_post DESC "; 
$query .= "LIMIT 50"; 

Но я хотел бы заказать этот запрос не id_post DESC, но по id_post, которые имеют больше всего нравится по id_user (DESC) в таблице beva_post_like

в таблице beva_post_like выглядит следующим образом:

+-------------+--------------+ 
    | id_post  | id_user  | 
    +-------------+--------------+ 
    | 1   | 20   | 
    | 1   | 11   | 
    | 1   | 10   | 
    | 2   | 20   | 
    | 2   | 50   | 
    | 1   | 15   | 
    +-------------+--------------+ 

Я попытался с GROUP BY в LEFT JOIN beva_post_like, но он не работает!

Должен ли я использовать больше запросов?

Спасибо за вашу помощь ...

Chris

После вашего ответа я сделал это, но я до сих пор некоторые сообщения с «как» в конце

$query = "SELECT 
     beva_post.*, 
     COUNT(beva_post.id_post) as cpt, 
     CONVERT_TZ(beva_post.date_published, '-00:00', '+00:00') as moment, 
     beva_rubrique.titre_en, 
     beva_user.image_user 
     FROM beva_post 
     LEFT JOIN beva_user 
      ON beva_user.id_user = beva_post.id_user 
     LEFT JOIN beva_rubrique 
      ON beva_rubrique.id_rubrique = beva_post.id_rubrique 
     LEFT JOIN beva_post_like 
      ON beva_post_like.id_post = beva_post.id_post 
     WHERE beva_post.id_user != '' 
     AND beva_post.flag = 'true' "; 
$query .= "GROUP BY beva_post.id_post "; 
$query .= "ORDER BY cpt DESC "; 
$query .= "LIMIT 50"; 

ответ

1

Вы хотите иметь сообщения отсортированы по количеству пользователей, которым это понравилось? Если это тот случай, вы можете GROUP BY id_post, добавив COUNT(id_user) в SELECT и ORDER BY DESC на этом COUNT(id_user).

Если я неправильно понимаю ваш вопрос, можете ли вы уточнить цель ORDER BY?

+0

Мне нужно сделать заказ сообщения теми, кто больше всего нравится пользователю. Сообщение, которое не имеет подобного, должно также быть шоу, но в конце. – Chris

+0

Нет, это не сработает! – Chris

+0

Почему это не сработало? «GROUP BY» не вернул никаких результатов? Можете ли вы отредактировать первое сообщение с помощью нового запроса? – Damien