Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
1

Оптимальное решение вывода из БД

20.04.2012, 18:44. Показов 1097. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Помогите, кто может, решить такой вопрос...
У меня в БД есть две таблицы "catalogs" и "goods". Хочу реализовать такой вывод данных из БД:
Каталог №1
- Товар №1
- Товар №2
- Товар №3
...

Каталог №2
- Товар №1
- Товар №2
- Товар №3
...

Вобщем, я думаю как лучше реализовать это:
- В цикле:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// Вытаскиваем все каталоги
$catalogs = mysql_query("SELECT * FROM catalogs");
 
// В цикле обходим массив с каталогами
while( $catalog = mysql_fetch_array( $catalogs ) )
{
    // Вытаскиваем все товары, которые принадлежат нашему каталогу
    $all_goods = mysql_query("SELECT * FROM goods WHERE catid = '{$catalog['id']}'");
    
    // Выводим имя каталога
    echo $catalog['name']."<br>";
    
    // В цикле обходим все товары
    while( $goods = mysql_fetch_array( $all_goods ) )
    {
        // Выводим имя товара
        echo $goods['name']."<br>";
    }
}
?>
Или можно это сделать как-то оптимальнее? Например:
- Послать всего один запрос к БД, в котором из таблиц вытаскиватся сразу все каталоги и принадлежащие им товары. Это я пробовал сделать с объединением, но если все объединённые данные выводить в цикле, то цикл, обходя и выводя товары, повторно выводит и название каталогов. А мне нужно ОДИН раз вывести название каталога и в цикле - названия товаров для него...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2012, 18:44
Ответы с готовыми решениями:

Оптимальное решение
Приветствую! И так для начала опишу основной принцип: 1. Будет реализовано ПО, которое...

Оптимальное решение?
Есть таблица: ************************************************************ * а здесь...

Оптимальное решение
Есть задачка: Требуется определить, сколько цифр N встречается в диапазоне между L числом ряда...

Оптимальное решение задачи
Задача на картинке. Я придумал такое решение #include &lt;iostream&gt; #include &lt;windows.h&gt; #include...

3
75 / 75 / 13
Регистрация: 02.02.2012
Сообщений: 462
21.04.2012, 11:56 2
SQL
1
SELECT c.id, c.name FROM catalogs AS c LEFT JOIN goods AS g ON g.catid=c.id
попробуй так, я у меня похожая ситуация была. нужно было достать коменты и логин с одной таблице, а потом достать аватарку пользователя с другой таблице. решил так
SQL
1
2
3
4
SELECT c.login, c.comment , u.ava
                    FROM comments AS c  
                    LEFT JOIN users AS u ON u.login = c.login
                    WHERE catalogUrl="'.addslashes($_GET['current']).'" ORDER BY c.comId DESC
1
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
21.04.2012, 18:10  [ТС] 3
fireridlle, извините, а можно пример вывода полученных таким образом данных в цикле?
Это:
PHP
1
2
3
4
5
6
$query = mysql_query("SELECT c.id, c.name FROM catalogs AS c LEFT JOIN goods AS g ON g.catid=c.id");
 
while($res = mysql_fetch_array($query))
{
    echo $res['name'];
}
не подходит
0
75 / 75 / 13
Регистрация: 02.02.2012
Сообщений: 462
21.04.2012, 18:29 4
попробуйт этот сделать запрос через консоль или пхпмайадмин и посмотри какой будет результат.
я даже не уверен что это вам подойдет, но попытка не пытка
1
21.04.2012, 18:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2012, 18:29
Помогаю со студенческими работами здесь

Более оптимальное решение
Хочу сделать игру с реальной физикой космоса. У корабля есть двигатели, которые прилагают силу...

это оптимальное решение?
Даны три стержня, на один из которых нанизаны восемь колец, причем кольца отличаются размером и...

Посоветуйте оптимальное решение
Что сейчас есть - веб сервер, бд mysql, php. Своего рода сайт в локальной сети. На сервере есть...

Оптимальное решение по парсеру
Добрый день всем. Дело вот в чем задумал я сделать парсер контента, но перед тем как начать хотел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru