Форум SAPE.RU

Форум SAPE.RU (http://forum.sape.ru/index.php)
-   Разработка и сопровождение сайтов (http://forum.sape.ru/forumdisplay.php?f=29)
-   -   помогите посчитать PHP (http://forum.sape.ru/showthread.php?t=42070)

Vetas 22.11.2009 21:06

Цитата:

Сообщение от 10012003 (Сообщение 630736)
zakaz номера заказа, чей заказ и кто исполнитель
basket содержание заказа: id заказа и количество
records номер заказа и имя

А где тогда номера товаров?
Цитата:

Сообщение от 10012003 (Сообщение 630736)
id соответствует номеру заказа

Сорри, неправильно написал... я имею в виду "номер товара".
Далее, выбираем по порядку эти номера из таблицы, в которой эти номера хранятся, делаем запрос к "zakaz" (с учетом, если добавишь поле) и в массиве суммируем общее количество.

DNA 22.11.2009 21:19

Цитата:

Сообщение от 10012003 (Сообщение 630705)
как организовать с помощью GROUP BY не знаю

"SELECT col_name1,..., col_nameX,SUM($sum) FROM tablename GROUP BY $group";
Где $sum - то, поле которое должно быть суммировано, $group - поле по которому будет группировка

10012003 22.11.2009 21:33

Цитата:

Сообщение от Vetas (Сообщение 630757)
и в массиве суммируем общее количество.

вот смотрите у меня 5 пользователей у них по 5 заказав в которых все товары одинаковы, но разное количество, если все подрят сумировать, то у каждого получиться одна и таже цифра, а они должны быть разными, а если учесть, что пользователей может быть 10000 то тогда какие ресурсы нужны???
так что создание еще одной таблицы думаю не подходит.

DNA,
ситуация такая 5 заказов товары разные, какие из них совпадут заранее не известно, так что я пока не понимаю по чему группировать и и что складывать, а что нет

Vetas 22.11.2009 21:38

Цитата:

Сообщение от 10012003 (Сообщение 630767)
так что создание еще одной таблицы думаю не подходит.

Не еще таблицы, а поля "номер товара" в таблицу "zakaz".

gobliin 22.11.2009 21:48

Цитата:

Сообщение от 10012003 (Сообщение 630736)
Добавлено через 2 минуты
gobliin, что то Вы не в ту степь пошли

все гораздо проще, нужно сложить значения при совпадении имен, какая разница что откуда берется

Как раз таки в ту степь понисло, или думаешь тут одни телепаты собрались? Если ER-модель базы не нормальная, то сложно будет получить нужные значения.

И ещё совет на будующее, не стоит так называть переменные, это не кошерно. Вместо zakaz красивее было бы писать order а в таблице basket поле zakaz красивее было бы назвать orderID.

таким образом можно было бы например, написать легко читаемый запрос:
select order.* from basket, orderID where basket.orderID=order.ID

Добавлено через 9 минут
Если не понимаешь о чем я, то попробую объяснить.
Надо формализовать задачу было. Типа не полениться написать, нечто вроде:

исходные данные
таблица заказов zakaz (поле1, поле2, поле3)
таблица карзины товаров basket (поле1, поле2, поле3)
таблица ? record (поле1, поле2, поле3)
....

таблица basket имеет zakaz (связаны по полю)
...


Необходимо посчитать количество товара .... .

А ты привел 10 строчек кода. Сказал "выводит А надо Б".

Надеюсь я понятно изложил свои мысли?

DNA 22.11.2009 21:56

Цитата:

Сообщение от 10012003 (Сообщение 630767)
DNA,
ситуация такая 5 заказов товары разные, какие из них совпадут заранее не известно, так что я пока не понимаю по чему группировать и и что складывать, а что нет

Цитата:

Сообщение от 10012003 (Сообщение 630665)
надо сделать что бы выводило номер товара и общее количество

"SELECT col_name1,..., col_nameX,SUM(поле количество товара) FROM tablename GROUP BY поле номер товара";

....
gobliin, +1

10012003 23.11.2009 01:30

попробую объяснить еще раз

Выбираю текущие заказы, текущего пользователя
PHP код:

<?
$select_zak 
mysql_query("SELECT * FROM zakaz WHERE pr = '$_SESSION[USER]' AND cat = '$catalog[id]' AND statys = '1' ");
while(
$zak mysql_fetch_assoc($select_zak)){

передаются номера заказов

Выбираю товары которые есть в закезе
PHP код:

$select_tovq mysql_query("SELECT * FROM basket WHERE zakaz = '$zak[id]'");
while(
$tovq mysql_fetch_assoc($select_tovq)){ 

получаем id товаров и их количество

теперь выводим вместо цифр наименования
PHP код:

$select_tovn mysql_query("SELECT * FROM records WHERE id = '$tovq[tovar]' ");
$tovn mysql_fetch_assoc($select_tovn);
?> 

вывод на экран
PHP код:

<?=$tovn[nomer]?> <?=$tovn[name]?>  <?=$tovn[kol]?> <br>
<? }} ?>

получается:

заказ 1

номер товара, имя товара и его количество, то есть

123 имя1 1шт
321 имя2 2шт
456 имя3 1шт

заказ 2

123 имя1 2шт
321 имя2 1шт
789 имя4 1шт
987 имя5 2шт

заказ 3

321 имя2 1шт

Хочу что бы был вывод:

123 имя1 3шт
321 имя2 4шт
456 имя3 1шт
789 имя4 1шт
987 имя5 1шт

количество заказов не ограниченно, количество товаров в заказе не ограничено, и соответственно заранее не известно, так же как и заранее не известны номера заказов.

требуется посчитать общее количество товара из выбранного массива заказов

ну честно не знаю как еще объяснить.

Добавлено через 2 минуты
Цитата:

Сообщение от DNA (Сообщение 630791)
SELECT col_name1,..., col_nameX,

насколько я понимаю здесь необходимо знать количество col_name

Atomic 23.11.2009 02:15

SELECT таблица1.столбец, таблица2.столбец, таблица3.столбец
FROM таблица1, таблица2, таблица3
WHERE {условие}
AND {условие}
....

Цитата:

Хочу что бы был вывод:
123 имя1 3шт
321 имя2 4шт
456 имя3 1шт
789 имя4 1шт
987 имя5 1шт
while($goods=mysql_fetch_assoc($select)){
$good["num"][$goods["goods_id"]]=+$goods["num"];
$ArrayGoodsFromOrder[$goods["goods_id"]]=array("name"=>$goods["name"],"num"=>$good["num"][$goods["goods_id"]]);
}

foreach(
$ArrayGoodsFromOrder as $id=>$value) {
echo $id.'-'.
$ArrayGoodsFromOrder[$id]["name"].'-'.$ArrayGoodsFromOrder[$id]["num"];
}

не гарантирую правильность, пытаюсь донести основную мысль.




Часовой пояс GMT +3, время: 05:30.

Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.