Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Distinct

Сообщения:  [1-10]   [11-17] 

 
 автор: chexov   (01.09.2008 в 06:20)   письмо автору
 
   для: Trianon   (31.08.2008 в 19:20)
 

PHP средствами все работает отлично! Спасибо огромное!

  Ответить  
 
 автор: Trianon   (31.08.2008 в 19:20)   письмо автору
 
   для: chexov   (31.08.2008 в 18:58)
 

pole2
разделитель списка

  Ответить  
 
 автор: Trianon   (31.08.2008 в 19:18)   письмо автору
 
   для: chexov   (31.08.2008 в 18:56)
 

<?php

$q  
mysql_query("SELECT `pole1`, `pole2` FROM `table` ORDER BY pole1, pole2 ");
$curr false;
  echo 
"<ul>";
while (
$arr mysql_fetch_assoc($q))
  {
    
$pole1 htmlspecialchars($arr['pole1']);
    
$pole2 htmlspecialchars($arr['pole2']);
    if(
$curr !== $pole1)
    {
      if(
$curr !== false)
        echo 
"</ul></li>\r\n"
      echo 
"<li>$pole1<ul>"
      
$curr $pole1;
    }
    echo 
"<li>$pole2</li>\r\n"
  }
  if(
$curr !== false)
        echo 
"</ul></li>"
  echo 
"</ul>\r\n"

?> 

  Ответить  
 
 автор: chexov   (31.08.2008 в 18:58)   письмо автору
 
   для: Trianon   (31.08.2008 в 18:32)
 


ORDER BY pole SEPARATOR ','

по какому полю сортируем? по 1 или 2 и что такое ',' ?

  Ответить  
 
 автор: chexov   (31.08.2008 в 18:56)   письмо автору
 
   для: Trianon   (31.08.2008 в 18:32)
 


<?php

$q  
mysql_query("SELECT distinct(`pole1`), `pole2` FROM `table`;");
while (
$arr mysql_fetch_assoc($q))
  {
  echo 
"
    <ul> 
      <li>'.
$arr['pole1'].' группа
       <ul> 
        <li> "
.$arr['pole2']."</li> 
       </ul> 
      </li>
    </ul>"
;
  }
?>

что то типа того

  Ответить  
 
 автор: Trianon   (31.08.2008 в 18:32)   письмо автору
 
   для: chexov   (31.08.2008 в 18:10)
 

SELECT pole1, GROUP_CONCAT(pole2 ORDER BY pole SEPARATOR ',') 
  FROM tbl 
  GROUP BY pole1


Что до php - показывайте код, который выведет (31.08.2008 в 07:49) - а там скорректируем.

  Ответить  
 
 автор: chexov   (31.08.2008 в 18:10)   письмо автору
 
   для: Trianon   (31.08.2008 в 13:48)
 

Подскажите как через GROUP_CONCAT() и как через php если можно наглядно

  Ответить  
 
 автор: Trianon   (31.08.2008 в 13:48)   письмо автору
 
   для: Trianon   (31.08.2008 в 13:43)
 

Есть, правда, вариант запроса, который вернет

1 | user1,user2
2 | user3
3 | user4 
4 | user5,user6

Это агрегирующий запрос с применением функции GROUP_CONCAT()
Но у него есть недостаток... С большими объемами данных такой запрос справляется без гарантий.
Так что лучше всё же через php.

  Ответить  
 
 автор: Trianon   (31.08.2008 в 13:43)   письмо автору
 
   для: chexov   (31.08.2008 в 13:33)
 

почему тогда не так:


группа 1- user1
        - user2

группа2 - user3

группа3 - user4 

группа4 -user5
        -user6

?

Вопрос надо читать как "где в таблицах присутствует информация, указывающая, что один ответ верен, а другой - нет?"

И поскольку оба ответа равновозможны - чистым SQL Вашу задачу не решить.
SQL - (в большинстве ситуаций) язык запросов с детерминированным результатом, а не абы каким.

А для решения на уровне php вполне достаточно того вывода, что Вы привели в (31.08.2008 в 07:49)

  Ответить  
 
 автор: chexov   (31.08.2008 в 13:33)   письмо автору
 
   для: Trianon   (31.08.2008 в 11:46)
 



        - user1
группа 1- user2

группа2 - user3

группа3 - user4 

        -user5
группа4 -user6

примерно так

  Ответить  

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования