помогите оптимизировать запрос

Тема в разделе "Базы данных", создана пользователем ghostik32, 16 апр 2010.

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

    ghostik32 Создатель

    Регистр.:
    26 янв 2010
    Сообщения:
    40
    Симпатии:
    1
    хотелось бы чтобы это был один запрос а не 40+ как сейчас у меня.
    Вот сам скрипт:
    PHP:
    $_RES $db->query ("SELECT nameCategories,idSubCat,link FROM `categories` ORDER BY nameCategories");

    $navigation "<ul id='navmenu'>\n";

    while (
    $_ROW $db->fetch_array ($_RES))
    {
        
    $navigation .= "<li><a href='" $_ROW['link'] . "'>" $_ROW['nameCategories'] . "</a>\n";

        if (
    $_ROW['idSubCat'] > 0)
        {
            
    $_RES_subCat $db->query ("SELECT nameSubCategories,link FROM `subCategories` WHERE id = '" $_ROW['idSubCat'] . "' ORDER BY nameSubCategories");
            
            
    $navigation .= "<ul>\n";
            
            while (
    $_ROW_subCat $db->fetch_array ($_RES_subCat))
            {
                
    $navigation .= "<li><a href=\"" $_ROW_subCat['link'] . "\">" $_ROW_subCat['nameSubCategories'] . "</a></li>\n";
            }
            
            
    $navigation .= "</ul>\n";
        }
        
        
    $navigation .= "</li>\n";
    }

    $navigation .= "</ul>\n";
     
  2. -Dima-

    -Dima-

    Регистр.:
    3 окт 2009
    Сообщения:
    167
    Симпатии:
    66
    что сразу бросается в глаза, $_RES_subCat стоит вынести за while, загрузить туда полностью таблицу, а потом делать из этого массива выборку для каждой категории.
     
    ghostik32 нравится это.
  3. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.065
    Симпатии:
    197
    Советую категории и субкатегории держать в одной таблице
    примерная структура

    PHP:


    CREATE TABLE 
    IF NOT EXISTS `content_groupe` (
      `
    id_groupeint(11NOT NULL AUTO_INCREMENT,
      `
    name_groupevarchar(255NOT NULL,  
      `
    parentint(11NOT NULL,
      
    PRIMARY KEY (`id_groupe`)
    ENGINE=MyISAM  DEFAULT CHARSET=cp1251;


    Если parent равно 0 это родительская категория
    Если parent равен скажем 1 то это субкатегория принадлежащая родительской с id_groupe равным 1


    при выводе смотрим если parent не равен 0 то это субкатегрия и ставим нужные теги, если равен то это родительская.

    Если так не понятно могу еще кусок кода скинуть как это ввести
     
  4. ghostik32

    ghostik32 Создатель

    Регистр.:
    26 янв 2010
    Сообщения:
    40
    Симпатии:
    1
    Если можеш скинь, посмотрю. А как вытащить все данные из таблицы?
    запрос типо
    PHP:
    $a mysql_query ("select * from `s`"); 
    $b mysql_fetch_array ($a);
    вытащить только одну строку из таблицы в которой ещё строк 200.
     
  5. rex1963

    rex1963

    Регистр.:
    19 фев 2007
    Сообщения:
    228
    Симпатии:
    47
    PHP:
    SELECT  subCategories.nameSubCategories as s_namecategories.nameCategories as dir_name
    FROM
     subCategories
      INNER JOIN categories ON 
    subCategories.id =  categories.idSubCat
    ORDER BY  categories.nameCategoriessubCategories.nameSubCategories
    Поля выборки добавляешь сам
     
    ghostik32 нравится это.
Статус темы:
Закрыта.