Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Группировка в MYSQL
Форумы портала PHP.SU » » Вопросы новичков » Группировка в MYSQL

Страниц (1): [1]
 

1. Elegant - 25 Января, 2015 - 06:32:51 - перейти к сообщению
Добрый день! Есть вопрос по правильному запросу для выборки из БД

Для начала есть записи в БД примерно такие
ID Name
1 Банкомат Сбербарнка России
2 Банкомат Сбербарнка России
3 Банкомат Сбербарнка России
4 Филиал Сбербанка России
5 Филиал Сбербанка России
6 Филиал Сбербанка России
7 Филиал Сбербанка России
8 Офис Сбербанка России
9 Просто Сбербанк

Т.е. В базе встрчаеются одинаковые по столбику NAME объекты...

Вот файл PHP который получает по GET запрос "Сбер" и выдает результаты


PHP:
скопировать код в буфер обмена
  1. $massiv = Array();
  2. $sql = "SELECT `org_name`, `org_filial`, `img_prev`
  3. FROM  `zavedenia`
  4. WHERE  `org_name` LIKE  '%".$id."%'
  5. ORDER BY `status_id` DESC , `org_name` ASC
  6. LIMIT 15";
  7. $result = mysql_query($sql)  or die(mysql_error());
  8. while ($itog = mysql_fetch_array($result, MYSQL_ASSOC))
  9.    {
  10.          
  11.             $massiv[] = $itog;
  12.    }
  13. echo '{"level0":'.json_encode($massiv).'}';
  14.  


И вот приходит результата ответа от сервера который выдает все записи с содержанием СБЕР в количестве 15 штук(у меня в базе просто гораздо больше)...
А сообственно вот вопрос...Как в файле сгрупировать все записи по NAME? Не в базе а именно чтобы файл сам группировал?
и выдывал
1 Банкомат Сбербарнка России
1 Филиал Сбербанка России
1 Офис Сбербанка России
1 Просто Сбербанк
2. alexforce2 - 25 Января, 2015 - 06:40:06 - перейти к сообщению
В запрос надо добавить DISTINCT перед столбцом, значение которого должно быть уникальным в выборке, т.е. запрос будет выглядеть так:
CODE (SQL):
скопировать код в буфер обмена
  1. "SELECT DISTINCT `org_name`, `org_filial`, `img_prev`
  2. FROM  `zavedenia`
  3. WHERE  `org_name` LIKE  '%".$id."%'
  4. ORDER BY `status_id` DESC , `org_name` ASC
  5. LIMIT 15"
3. Elegant - 25 Января, 2015 - 06:42:53 - перейти к сообщению
alexforce2 пишет:
В запрос надо добавить DISTINCT.....

Спасибо помогло

 

Powered by ExBB FM 1.0 RC1