[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите составить запрос!
Гость_Mila
Здравствуйте!

Не судите строго.... я просто готовлюсь к вступительным экзаменам, и один преподаватель задал задачку:
Есть группа изделий со своими атрибутами, дополнительное оборудование, к каждому изделию есть свой состав изделия.

В отчете должна быть такая информация:
№ сделки, регистр.№,дата регистрации, наименование изделия, состав, доп. оборудование.

Я сделала таблицы:
tovar(id_tovar, tovar_name,cena,kolich),
dop_obor(id_dop, dop_name,dop_cena,dop_kolich),
sostav(id_sost, sost_name,sost_cena,sost_kolich)
order(id_order,reg_num,data_reg)
каким запросом мне можно вывести товары, доп.оборудование и состав оборудования которые относятся к определенному id_order?

Он эту задачку выдал еще паре человек, но они обьяснить, как ее сделать не хотят, а я сама не понимаю (
Надежда только на Вас!



Спустя 7 минут, 22 секунды (3.06.2010 - 15:50) DedMorozzz написал(а):
3$ если сделать за тебя.

Спустя 14 секунд (3.06.2010 - 15:50) Basili4 написал(а):
Я в таблицах не вижу полей по которм они связаны. Вот смотри Ордер должен быть свзян с товаром связью один ко многи тоесть в ордер может входить много товаров товар связан доп оборуд как один комноги или один к одному и составом опять же как и через какое поле

Спустя 1 минута, 59 секунд (3.06.2010 - 15:52) DedMorozzz написал(а):
Basili4, зря... Не бывает такого, что бы давали задание, не объясняя, материала. А приходить на форум со словами "сделайте за меня"...
Другое дело, если бы "я читал вотэто(тут линка),это(ещё 1) и это..." у меня вышло так, так и так. Как мне сделать правильно, ибо сие не работает, а не так как сейчас.

Спустя 6 минут (3.06.2010 - 15:58) Basili4 написал(а):
Цитата (Гость_Mila @ 3.06.2010 - 12:42)
Не судите строго.... я просто готовлюсь к вступительным экзаменам,


На вступительных экзаменах может быть все. Я помогу девочке не тем что решу её задачу. а попробую её расказать про связи между таблицами и основную идею построения баз. А захочет готовый вариант обратится к Тебе.

Спустя 7 минут, 18 секунд (3.06.2010 - 16:05) DedMorozzz написал(а):
smile.gif Объяснить лучше мана и спец ресурсов(в 2 строчки smile.gif )?!
*перестал удивляться собственным создателям ОС за пол года, с собственным антивирусом, аналогом фотошопа и прочего...*

Спустя 3 минуты, 46 секунд (3.06.2010 - 16:09) waldicom написал(а):
Цитата (DedMorozzz @ 3.06.2010 - 15:05)
Объяснить лучше мана и спец ресурсов(в 2 строчки smile.gif )?!

Иногда 2 строчки лучше стотомного собрания сочинения мануалов...

Спустя 7 минут, 16 секунд (3.06.2010 - 16:16) DedMorozzz написал(а):
Но не в данном случае. Ибо вопрос "А что такое БД и нафига их связывать" в 2 строки не объяснить, кроме как "крутая вещь" и "надо"

Спустя 7 минут, 34 секунды (3.06.2010 - 16:24) Гость_Mila написал(а):
Спасибо за критику и отдельное СПАСИБО Basili4 который не стал смеяться надо мной! Поля в таблички добавила. Вот таким запросом пробую получить нужные мне данные... но что-то не получается (

SELECT
`order`.id_tovar,
tovar.tovar_name,
tovar.cena,
tovar.kolich,
sost.sost_name,
sost.sost_cena,
sost.sost_kolich,
dop.dop_name,
dop.dop_cena,
dop.dop_kolich
FROM
tovar
LEFT OUTER JOIN `order` ON (tovar.id_tovar = `order`.id_tovar)
RIGHT OUTER JOIN dop ON (tovar.id_tovar = dop.id_dop)
RIGHT OUTER JOIN sost ON (tovar.id_tovar = sost.id_tovar)

Спустя 14 минут, 46 секунд (3.06.2010 - 16:39) Basili4 написал(а):
Вот смотри

тебе нужно показать данные из нескольких табл их и укажи в form tovar, order,dop,sost

далее нужно условие пишем where какое на соответсвие индифик товара

вот и пишем tovar.id_tovar=`order`.id_tovar and tovar.id_tovar=dop.id_tovar and tovar.id_tovar=Sostav.id_tovar во всех таблах должено быть поле id_tovar по нему их и вяжем



Спустя 19 минут, 23 секунды (3.06.2010 - 16:58) Гость_Mila написал(а):
т.е. я поняла что нужно сделать вот так:

SELECT
tovar.tovar_name,
tovar.cena,
sost.sost_name,
sost.sost_cena,
sost.sost_kolich,
`order`.reg_data,
`order`.reg_num,
dop.dop_name,
dop.dop_cena,
dop.dop_kolich
FROM
tovar, sost, `order`, dop
WHERE
tovar.id_tovar=`order`.id_tovar and
tovar.id_tovar=dop.id_tovar and
tovar.id_tovar=sost.id_tovar

и условием WHERE мы исключаем из запроса JOIN?

Спустя 1 минута, 52 секунды (3.06.2010 - 17:00) Basili4 написал(а):
да join здесь не нужен

Спустя 12 минут, 18 секунд (3.06.2010 - 17:12) Гость_Mila написал(а):
Basili4 спасибо Вам огромное!

Спустя 18 часов, 22 минуты, 35 секунд (4.06.2010 - 11:35) Sadonn написал(а):
Спасибо Mila за токой вопрос (я тоже только учусь, и на таком примере и с таким обьяснением потихонечьку глаза открываються на mysql+php)... а вот , как результат такого запроса вывести на эран??? blink.gif О великие!!! не дайте "маленьким" запутаться huh.gif

Спустя 4 минуты, 37 секунд (4.06.2010 - 11:39) Basili4 написал(а):
Я думаю мож мне книгу написать :-)

Спустя 4 минуты, 19 секунд (4.06.2010 - 11:44) Sadonn написал(а):
Цитата (Basili4 @ 4.06.2010 - 08:39)
Я думаю мож мне книгу написать :-)

Это былоб очень даже классно! С такими подробными примерами и обьяснениями я б ее сразу купил )

Спустя 1 час, 27 минут, 54 секунды (4.06.2010 - 13:11) NoCash написал(а):
Basili4 думаю лучше попова получиться))) laugh.gif

Спустя 5 дней, 6 часов, 44 минуты, 31 секунда (9.06.2010 - 19:56) Dron19 написал(а):
Цитата (Sadonn @ 4.06.2010 - 08:35)
Спасибо Mila за токой вопрос (я тоже только учусь, и на таком примере и с таким обьяснением потихонечьку глаза открываються на mysql+php)... а вот , как результат такого запроса вывести на эран??? blink.gif О великие!!! не дайте "маленьким" запутаться huh.gif

Ничего в этом сложного нет, лично я такие задачи решаю легко и с помощью одной таблице в базе, просто я создаю таблицу, ввожу в нее поля, а в поля ввожу данные о том или ином товаре, иначе говоря так, например есть таблца test, в ней поля: id, name и т.д, например с помощью id поля, я бы вывел их сначала попорядку с помощью цикла do whilу и оператора printf, а уже там выставил ссылки и так же по полям определил название товара, что он из мебя представляет, все это должно быть в полях. Вот например как все это вывести на экран:

// Открываю php скрипт
<?php
//Пример запроса
$zapros = mysql_query("SELECT * FROM tovars WHERE ORDER BY id DESC");
$myrow = mysql_fetch_array($zapros);
/*ORDER BY id DESC означает сортировать по полю id наоборот, то есть, вот есть несколько id со значениями 1,2,3,4 и 5, в дальнейшем при выводе они будут выводиться не правильно, ну вот для ясности представим, что это номера сообщений в чате, пользователь написал сообщение и сообщению присвоился id по возрастанию, это свойство таблиц, называется auto_increment, оно задается при создании таблиц и когда оно стоит и в таблицу добовляют запись, это поле автоматический заполняется цифрой, например было сообщение с номером 4, то следующее 5 и т.д, так вот, при выводе в цикле опять таки же в чате последнее сообщение будет выводится в самом конце, а с сортировкой в самом начале*/

/* Допустим у нас есть три поля, первое id, name, info, первое поле уже понятно для чего, второе содержит название продукта, а третье информацию о нем */

do {
printf("
<a href='index.php?id=%s'>%s</a>
"
,$myrow['id'],$myrow['name']);
}
while($myrow = mysql_fetch_array($zapros));
//Дальше проверяем если нажата ссылка, то выводим описание товара
if(isset($_GET['id'])) {
echo "Название Товара: $myrow['name']<br>Описание Товара: $myrow['info']";
}
?>

В итоге получается вот такой код:

$zapros = mysql_query("SELECT * FROM tovars WHERE ORDER BY id DESC");
$myrow = mysql_fetch_array($zapros);
do {
printf("
<a href='index.php?id=%s'>%s</a>
"
,$myrow['id'],$myrow['name']);
}
while($myrow = mysql_fetch_array($zapros));
//Дальше проверяем если нажата ссылка, то выводим описание товара
if(isset($_GET['id'])) {
echo "Название Товара: $myrow['name']<br>Описание Товара: $myrow['info']";
}
?>

Но перед тем как поставить запрос, нужно подключиться к MySQL серверу, думаю тут все понятно, подробности и что делает каждая функция поищите в интернете, а задача которую Вам задали, элементарная до безобразия =) Удачи, Вы обязательно поступите...

Спустя 1 минута, 24 секунды (9.06.2010 - 19:57) Dron19 написал(а):
Цитата (NoCash @ 4.06.2010 - 10:11)
Basili4 думаю лучше попова получиться))) laugh.gif

Да кстати, у Евгения Попова очень толковые видео уроки, если что, вот его сайт: Ruseller.com

Спустя 1 минута, 40 секунд (9.06.2010 - 19:59) Dron19 написал(а):
Цитата (Basili4 @ 4.06.2010 - 08:39)
Я думаю мож мне книгу написать :-)

Пиши, буду рад знать о том, что из программистов есть хоть кто-то не ленивый
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.