[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Связка нескольких таблиц в MySQL
deeplanet
Вопрос собственно больше по Mysql. Имеется две таблицы в бд.
1-ая таблица ProductName, в ней два поля Id(primary),ProductName и соответственно вторая таблица moscow, в ней 3 поля id(primary),ProductID,Prodaja.
По логике вещей в первой таблице мы храним название продукта с его айдишником, во второй мы записываем обьемы продаж товаров в регионе moscow. Сообственно поэтому я подумал что во второй таблице должен быть id товара из первой таблицы ну и собственно поле колличества продаж по определенному товару.
Вопрос заключается в том, чтобы вывести на web страничку запрос через PHP: Если пользователь выбрал московский регион и продукт- тогда соответственно ему выдалась на страничке таблица moscow с продажами соответствующими данному id. Как сделать так чтобы вторая таблица узнавала id продукта первой таблицы?



Спустя 1 минута, 1 секунда (12.08.2010 - 11:00) Lenarfate написал(а):
left join

Спустя 40 минут, 38 секунд (12.08.2010 - 11:41) linker написал(а):
Id продукта как видимо передается через GET/POST. Просто вывести продажи по полученному Id:
SELECT Prodaja FROM moscow WHERE ProductID = <Значение полученного Id>
Можно одним запросом вытянуть и продажи и сам продукт
SELECT prod.Prodaja, pn.ProductName FROM ProductName AS pn 
LEFT JOIN moscow AS prod ON prod.ProductID = pn.Id
WHERE pn.Id = <Значение полученного Id>

Спустя 34 минуты, 26 секунд (12.08.2010 - 12:15) deeplanet написал(а):
Тут еще вопрос накоевывается- можно ли в запросах к MySQL. Например INSERT вставлять в поля не значения а переменную, чтобы в конечном итоге вставилось значени переменной в поле таблицы?
например INSERT INTO <название таблицы> ([<Имя столбца>, ... ]) VALUES (<$_Post>);

Спустя 5 минут, 40 секунд (12.08.2010 - 12:21) linker написал(а):
Да пожалуйста
$ProductName = 'Овощи';
mysql_query("INSERT INTO ProductName (ProductName) VALUES ('" . $ProductName . "')");
А вот с $_POST так нельзя.

Спустя 10 минут, 31 секунда (12.08.2010 - 12:32) deeplanet написал(а):
хм... а если стоит такая задача: чекбоксами выбираются нужные поля из таблицы пользователем, а затем он получат сформированую выборку, а уж затем сформированная выборка insertтится в другую таблицу...просто у меня foreach($_POST['item'] as $id)
можно ли $id инсертить?

Спустя 1 минута, 57 секунд (12.08.2010 - 12:34) Lenarfate написал(а):
если $id автоинкремент, то нет

Спустя 7 минут, 12 секунд (12.08.2010 - 12:41) deeplanet написал(а):
ну получаетя автоинкремент так как в $id хранится массив в котором хранится группа товаров из выборки...хмм

Спустя 1 минута, 49 секунд (12.08.2010 - 12:43) linker написал(а):
На самом деле можно инсертить в автоинкрементные поля, главное чтобы в другой таблице не существовало записи с таким id.

Спустя 40 секунд (12.08.2010 - 12:43) Lenarfate написал(а):
автоинкремент это как правило целое порядковое число, которое генерируется автоматически

Спустя 1 минута, 37 секунд (12.08.2010 - 12:45) linker написал(а):
Lenarfate
Не важно, соблюдай уникальность и все будет хорошо, хотя практика конечно плохая.

Спустя 2 минуты, 44 секунды (12.08.2010 - 12:48) Lenarfate написал(а):
Цитата
практика конечно плохая.

вот и я об этом smile.gif

Спустя 3 минуты, 31 секунда (12.08.2010 - 12:51) deeplanet написал(а):
получилось с плохой практикой)

Спустя 31 минута, 25 секунд (12.08.2010 - 13:23) deeplanet написал(а):
Ребят а как работать с элементом формы
<select name=region size=10 multiple=multiple  class=header>
<option
style=\"background-color:FF2833\">Выбрать регион</option>
<option>Москва</option>
<option >Санкт-Петербург</option>
<option>Тюмень</option>
<option>Краснодарский край</option>
<option>Тверская область</option>
<option>Новгородская область</option>
<option>Самарская область</option>
</select>
Чтобы сравнивалось условие. Если выбрана Москва то PHP генерирует таблицу sql. Как правильно работать с переменными формы <select>

Спустя 18 минут, 30 секунд (12.08.2010 - 13:41) Lenarfate написал(а):
пост и гет, как и с другими переменными, получаемыми из форм

Спустя 9 минут, 26 секунд (12.08.2010 - 13:50) deeplanet написал(а):
правописание такое возможно <input type=checkbox name=item[] value='.$row[ProductName].','.$row[id].' />
foreach($_POST['item'] as $id)
print"$id";
грубо говоря чтобы выводилось два значения продукт нэйм и айди???

Спустя 10 минут, 17 секунд (12.08.2010 - 14:01) deeplanet написал(а):
value='.$row[id] $row[ProductName].' вот так

Спустя 2 минуты, 16 секунд (12.08.2010 - 14:03) deeplanet написал(а):
только вот как потом
foreach($_POST['item'] as $id)
print"$id"; сказать чтобы выводилось в одном<td>$id[ProductName] а в другом <td> $id[id]

Спустя 6 минут, 51 секунда (12.08.2010 - 14:10) linker написал(а):
echo '<input type="checkbox" name="item[]" value="' . $row['id'] . '" /> ' . $row['ProductName'];
А потом после submit
$Items = $_POST['id'];
// тут проверяем каждый элемент на валидность
$sql = "SELECT Id, ProductName FROM ProductName WHERE Id IN (" . join(',', $Items) . ")";
$Result = mysql_query($sql);
while($row = mysql_fetch_assoc($Result))
{
echo '<td>' . $row['Id'] . '</td><td>' . $row['ProductName'] . '</td>';
}

Спустя 12 минут, 40 секунд (12.08.2010 - 14:23) deeplanet написал(а):
Warning: join() [function.join]: Invalid arguments passed in

Спустя 3 минуты, 33 секунды (12.08.2010 - 14:26) linker написал(а):
Обшибся
$Items = $_POST['item'];

Спустя 11 минут, 13 секунд (12.08.2010 - 14:37) deeplanet написал(а):
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

Спустя 2 минуты, 46 секунд (12.08.2010 - 14:40) linker написал(а):
Я пишу укороченные варианты, с тебя хотя бы немного дописывать обработку ошибок.

Спустя 6 минут, 52 секунды (12.08.2010 - 14:47) deeplanet написал(а):
реально запутался... у меня изначально делалась выборка из общего чиссла ProductName. Ставил чекбоксы на против нужных записей и создавалась из 1000 записей только те которые были отмечены. У меня сейчас так
1 товар
2 товар
3 товар
4 товар
5 товар
ставлю чекбокс возле 1 и 2...Мне выдается на сайте таблица Вы выбрали: 1 товар и 2 товар. Все это работает. Только загвоздка в том что из этой выборки нужно из списка select выбрать регион для 1 и 2 товара- чтобы сгенерировалась третья таблица 1 товар москва 12000рублей
2 товар москва 7000 рублей. На этом шаге я и запарился. Может быть направишь меня в нужном направлении..я реально запутался

Спустя 4 минуты, 29 секунд (12.08.2010 - 14:51) deeplanet написал(а):
изначально я хотел создать главную таблицу с полями
id ProductName region1 region2 summa1 summa2
1 Валокордин Москва Питер 60 руб 200 руб.
Вывожу на сайт список
с большим колличеством строк из ProductName, затем человек ставит необходимые чекбоксы и делает выборку. Затем выбирает регион и я вывожу ему поля в зависимости от региона. Вот у меня и затык как после первой выборки регион высветить потом. Просто жесть..хжу по кругу.

Спустя 4 минуты, 29 секунд (12.08.2010 - 14:56) deeplanet написал(а):

вывожу главный список

while ($row = mysql_fetch_array($mq))
{
print ("
<tr>
<td><form action=main1.php method=POST> <input type=checkbox name=item[] value='.
$row[ProductName].' /><font size=-2>$row[ProductName]</font></td>
</tr>
"
);

Затем после того как человек отметит чекбокс получаем

foreach($_POST['item'] as $id)
print " <tr> <td><font size=-2>$id</font></td></tr>";

у меня выводится то что выбрал пользователь.

А вот как потом из того что он отобрал прикрутить еще один фильтр не пойму

Спустя 27 минут, 8 секунд (12.08.2010 - 15:23) linker написал(а):
Я уже сам запутался. То checkbox, то select.
1. Выбрал товары, нажал submit
2. Нашел товары в базе отобразил таблицей, плюс select со списком регионов.
3. Выбрал регионы нажал submit
4. Отобразил только по указанным регионам.

Вопрос, как у тебя хранится список регионов?

Спустя 5 минут, 36 секунд (12.08.2010 - 15:29) deeplanet написал(а):
список регионы хранятся в Таблице ProductName
id ProductNAme region cena все поля

Спустя 2 минуты, 31 секунда (12.08.2010 - 15:31) deeplanet написал(а):
1. Выбрал товары, нажал submit
2. Нашел товары в базе отобразил таблицей, плюс select со списком регионов.
3. Выбрал регионы нажал submit
4. Отобразил только по указанным регионам-УТОЧНЕНИЕ выбрал регион и мне сгенерилас таблица в которой напротив товара стоит объем продаж по нему в данном регионе, а так все верно- идею понял

Вопрос, как у тебя хранится список регионов?

Спустя 3 минуты, 55 секунд (12.08.2010 - 15:35) linker написал(а):
Зачем мешать коров с баранами? Выноси регионы в отдельную таблицу, а в этой храни только id региона. А в таблице с продажами не хватает также ссылки на регион. Цену в конкретном регионе, конкретного товара также нужно вынести в отдельную таблицу.
Быстрый ответ:

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