Нужен код для обработки БД

Тема в разделе "Базы данных", создана пользователем Apocalypse, 27 ноя 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Apocalypse

    Apocalypse Take My Revolution

    Moderator
    Регистр.:
    2 июн 2007
    Сообщения:
    307
    Симпатии:
    800
    Народ, помогите разобраться:

    В БД MySQL есть две таблицы.

    Таблица 1 имеет вид:
    Код:
    Колонка 1•••Колонка 2•••Колонка 3
    1•••0•••Имя 1
    2•••0•••Имя 2
    3•••0•••Имя 3
    4•••2•••Имя 2_1
    5•••2•••Имя 2_2
    6•••3•••Имя 3_1
    Значит надо составить запрос к базе через РНР скрипт, который пройдется по Таблице 1 и будет в цикле записывать сначала те элементы, значение в Колонке 2 которых будет равно 0 и если в Колонке 2 не 0, то сразу выбирается другой элемент из Таблицы 1 со значение в Колонке 2 равному Колонке 1, одним словом на выходе хочу получить:
    Код:
    Имя 1
    Имя 2
    Имя 2_1
    Имя 2_2
    Имя 3
    Имя 3_1
    Позже, если найдется решение, допишу вторую часть просьбы, а то я уже запарился =(
     
  2. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    В своем примере ты получил все значения из колонки_3, только отсортированные. Связи с твоим описанием нет, потому как из того, что ты описал, первые три значения должны быть:

    Имя 1
    Имя 2
    Имя 3

    В общем, нормально напиши чего ты хочешь.
     
  3. lozano

    lozano Писатель

    Регистр.:
    4 янв 2008
    Сообщения:
    9
    Симпатии:
    4
    Категории с подкатегориями ? Древовидное меню ? А сразу это сказать нельзя было ?

    Код:
    
    CREATE TABLE IF NOT EXISTS `catcol` (
      `catid` int(11) NOT NULL,
      `parent` int(11) NOT NULL,
      `title` varchar(254) collate latin1_general_ci NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
    
    INSERT INTO `catcol` (`catid`, `parent`, `title`) VALUES
    (1, 0, 'name 1'),
    (2, 0, 'name 2'),
    (3, 0, 'name 3'),
    (4, 2, 'name 2_1'),
    (5, 2, 'name 2_2'),
    (6, 3, 'name 3_1');
    
    SELECT cats2.title FROM catcol AS cats1 LEFT JOIN catcol AS cats2 ON (cats1.catid=cats2.catid AND cats1.parent=0) OR (cats2.parent=cats1.catid) WHERE cats2.catid IS NOT NULL ORDER BY cats1.catid
    
    
     
  4. Apocalypse

    Apocalypse Take My Revolution

    Moderator
    Регистр.:
    2 июн 2007
    Сообщения:
    307
    Симпатии:
    800
    Адекватному и понимающему человеку ясно сразу, чего нужно из просьбы, а если вы не понимаете то и зачем было писать. Все условия проблемы я описал :read: А то, что получилось на выходе, можно сказать, что это древовидная структура.

    Добавлено через 50 минут
    Либо я не правильно делаю, либо... У меня выводится куча повторений...

    Как вот вывести результат в РНР и затем на страницу? :thenks:
     
  5. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    Это вЫ будете оценивать мою адекватность? Если уж на то пошло, то "Адекватному и понимающему человеку" достаточно мануалов для решения таких проблем или это я создал тему?
    Не утруждайте себя ответом.

    http://www.nulled.ws/showthread.php?t=37719

    PHP:
        $SERVER 'localhost';
        
    $USER 'user';
        
    $PASSD 'password';
        
    $DB 'dbname';

        
    $MAIN_CONNECTION mysql_connect($SERVER$USER$PASSD);
        
    mysql_select_db($DB$MAIN_CONNECTION);
        
    $sql "SELECT cats2.title FROM catcol AS cats1 LEFT JOIN catcol AS cats2 ON (cats1.catid=cats2.catid AND cats1.parent=0) OR (cats2.parent=cats1.catid) WHERE cats2.catid IS NOT NULL ORDER BY cats1.catid";
        
    $result mysql_query($sql$MAIN_CONNECTION) or die(mysql_error($MAIN_CONNECTION));
        
    $rows mysql_numrows($result);
        for (
    $i=0;$i<$rows;$i++){
            
    $f mysql_fetch_array($result);
            echo 
    $f[title].'<br>';
        }
     
Статус темы:
Закрыта.