Вложенность в mysql

Skazo4nik

Новичок
Вложенность в mysql

Предполагается такая структура базы=)
-Товары
--ID
--Название
--Артикул
--Цена
--Оптовая цена
--Крупнооптовая цена
--Бренд
--Менеджер
--Категория
--Описание
--Картинка - или ссылка, или загрузить

-Категории
--ID
--Название категории

-Бренды
--ID
--Бренд
--Сайт бренда
--Менеджер по бренду

-Менеджеры
--ID
--Фамилия Имя Отчество
--Логин
--Пароль
--Емейл

Чувствую, что можно сделать как-то более логично - чтобы базу не запрашивать по три раза при добавлении позиции. Только как?=)

Почитал http://phpclub.ru/talk/showthread.php?s=&threadid=82030, не совсем врубился. Может, где-то есть понятный мануал по вложенным запросам?
 

ybilevych

Новичок
Почему же, нормализованная база... (конечно если поля Бренд, Менеджер и Категория таблицы Товары хранят соответствующие ID)
чтобы базу не запрашивать по три раза при добавлении позиции.
А зачем по 3 раза? Опиши, в чем проблема?
Может тебе надо соединение таблиц в запросе (JOIN)?
 

Skazo4nik

Новичок
Автор оригинала: ybilevych
Почему же, нормализованная база... (конечно если поля Бренд, Менеджер и Категория таблицы Товары хранят соответствующие ID)

А зачем по 3 раза? Опиши, в чем проблема?
Может тебе надо соединение таблиц в запросе (JOIN)?
Ммм, допустим, мне надо выдать инфу по конкретной позиции, выводя подробную инфу- и приходится запрашивать -
PHP:
$query=mysql_query("SELECT * FROM `tovary` WHERE `brand`='brand'");
$query1=mysql_query("SELECT * FROM `brands`" WHERE`brand`='brand'");
$query2=mysql_query("SELECT * FROM `managers`" WHERE `manager`=тутзначениеизвторогоселекта);
--цикл обработки и вывод нужной инфы--
или же, допустим, при добавлении новой позиции придется делать так
PHP:
При выводе категорий - 
$query=mysql_query("SELECT * FROM `categories`");
$result=вывод категорий в select input для дальнейшего выбора,
потом соответственно выборка из брендов и последующая запись - получается уже два селекта и один инсерт.

Я задумался об использовании файлов, если честно=) Может, так и правильней будет.)
Но для будущего развития все-таки интересно- как сделать так, как хочется+)
 

ybilevych

Новичок
Ничего не понял...

Ммм, допустим, мне надо выдать инфу по конкретной позиции, выводя подробную инфу- и приходится запрашивать -

$query=mysql_query("SELECT * FROM `tovary` WHERE `brand`='brand'");
$query1=mysql_query("SELECT * FROM `brands`" WHERE`brand`='brand'");
$query2=mysql_query("SELECT * FROM `managers`" WHERE `manager`=тутзначениеизвторогоселекта);
--цикл обработки и вывод нужной инфы--
Опиши подробно, что каждый запрос должен делать. То есть где будет использован результат этого запроса. Да, и напиши, кто такой "тутзначениеизвторогоселекта"

Я задумался об использовании файлов, если честно=) Может, так и правильней будет.)
ИМХО правильней будет база.
 

Skazo4nik

Новичок
хм
вот так тогда -
PHP:
$query=mysql_query("SELECT `name`,`brand` FROM `tovary` WHERE `category`='test'");
$result=mysql_fetch_row($query);
//dump
//$result[0]="Name"
//$result[1]="1" #id бренда

$query1=mysql_query("SELECT `site`,`brandname` FROM `brand` WHERE `id`='".$result[1]."'");
$result1=mysql_fetch_row($query1);
//dump
//$result1[0]="http://site"
//$result1[1]="BrandName"
//
//построение вывода
echo "<a href=".$result[1].">".$result1[1]."</a> выпустил товар под названием ".$result[0];
Вот как бы простой пример того, что я хочу сделать - то есть два запроса получается.

Конечно, можно делать и так - но насколько это правильно-то?=)
 

ybilevych

Новичок
Что я и предполагал... Как все запущено...
PHP:
$query=mysql_query("SELECT `name`,`brand`,`site`,`brandname` 
FROM `tovary`, `brand` 
WHERE `tovary`.`brand`= `brand`.`id` 
AND `category`='test'");

$result=mysql_fetch_array($query);
//построение вывода 
print_r($result);
 

Skazo4nik

Новичок
Автор оригинала: ybilevych
Что я и предполагал... Как все запущено...
PHP:
$query=mysql_query("SELECT `name`,`brand`,`site`,`brandname` 
FROM `tovary`, `brand` 
WHERE `tovary`.`brand`= `brand`.`id` 
AND `category`='test'");

$result=mysql_fetch_array($query);
//построение вывода 
print_r($result);
о, не знал=)
А если тройной выбор - то так?(просто, чтобы убедиться, что я правильно понял)

PHP:
$query=mysql_query("SELECT `name`,`brand`,`managername` ,`site`,`brandname`, `managerid`
FROM `tovary`, `brand`,`managers` 
WHERE `tovary`.`brand`= `brand`.`id` 
AND `tovary`.`managername`=`managers`.`managerid`  
AND `category`='test'");
чтобы выбрать из таблицы все значения
 

ybilevych

Новичок
Да, что-то вроде этого.
А `tovary`.`managername` - это ID менеджера или его имя?

Рекомендую придерживаться следующего стиля:
1. Название поля составляется как название таблицы и
Например article_name - Название товара в таблице article
brand_id - ID бренда в таблице brand
2. Если поле связано через внешний ключ, то лучше указывать одно и то же имя с обеих сторон ключа. Например
...
WHERE `tovary`.`brand_id`= `brand`.`brand_id`
...
 
Сверху