2015-06-23 3 views
-1

Я использую MySQL. У меня есть две таблицы, к которой я прикреплял изображения обеих таблиц? Когда я применяю ORDER по счету, тогда запрос возвращает результат из базы данных, но не правильно сортирует их, я не знаю, что я делаю неправильно? Я искал какой-то подобный вопрос в переполнении стека, но все же я столкнулся с той же проблемой. This is the table for groupsСортировать по счету, не правильно сортируя записи?

This is the table for the group member

Я попробовал это, но без успеха

$sql = "Select * from gr_groups"; 
    $result = $db->select($sql); 
    for($j = 0; $j < count($result); $j++) 
    { 
     $mygrp_id = $result[$j]['id']; 

     $query  = "Select * from gr_group_memberships where group_id =".$mygrp_id." ORDER BY COUNT(receiver_id) DESC"; 
     $exec_query = $db->select($query); 
     echo $exec_query[0]['group_id']; 
    } 

Спасибо заранее?

+0

Почему 'COUNT()' ?? –

+0

@ b0s3 Мне нужно заказать группы, у которых больше членов на вершине, поэтому я подсчитываю член и сортирую их по счету –

+0

Вы хотите, чтобы 'gr_group_memberships' для' group' отображали строку с наивысшим 'receiver_id' первым? –

ответ

1

Попробуйте

SELECT count(receiver_id) as total_receiver FROM gr_group_memberships 
INNER JOIN gr_group on gr_group_memberships.group_id = gr_group.id 
GROUP BY gr_group_memberships.receiver_id 
ORDER BY gr_group_memberships.receiver_id DESC 

Я думаю, что сработает то, что вы хотите

+0

Это работает, но небольшая проблема? –

+0

В чем проблема? –

+0

Я устал от этого, так что мой мозг прекратил работать? Когда я напрямую вставляю этот запрос в окно sql query, он работает, но когда я интегрирую его в php-код, это не так? –

1

Только

ORDER BY receiver_id DESC 

решит проблему.

Update

Попробуйте с присоединением их -

SELECT * FROM gr_groups g 
LEFT JOIN gr_group_memberships gm on gm.group_id = g.id 
ORDER BY COUNT(gm.receiver_id) DESC 

Это загрузит группу со всем ЧЛЕНСТВОМ упорядочения по колу.

+0

Принимая только самую высокую, а не другую? –

+0

* максимально высокий один не другой * ?? –

+0

Пять групп, группа с идентификатором 25, имеет 3 члена и вторую группу, имеет 2 члена, а остальные 3 группы имеют по 1 члену каждый. Я хочу устроить этот порядок, 25, 22,24,21 .... –

1

Попробуйте как можно ниже;

$query = "Select * from gr_group_memberships where group_id = ".$mygrp_id." ORDER BY receiver_id DESC"; 
1

Вы можете иметь количество и порядок путем, но в этом случае она будет лучше

SELECT *,count(receiver_id) as total_receivers 
    FROM gr_group_memberships 
    WHERE group_id =".$mygrp_id." 
    GROUP BY receiver_id 
    ORDER BY receiver_id DESC; 
+0

не удалось выполнить запрос ошибки –

+0

Извините простую ошибку места размещения. теперь это сработает. –

+0

Вы уверены, что все правильно или нет? –

1

Попробуйте этот запрос:

$query = "Select a.* from gr_group_memberships a 
      join(select receiver_id,count(receiver_id) as count1 
      from gr_group_memberships group by receiver_id) b on 
      a.receiver_id=b.receiver_id where a.group_id =".$mygrp_id." 
      ORDER BY count1 DESC"; 
+0

Query работает, но не упорядочивает записи –

+0

Вы можете попробовать этот ЗАКАЗ BY receiver_id DESC –

Смежные вопросы