Автор Тема: Помогите составить SQL запрос.  (Прочитано 395 раз)

17 Апрель 2016, 13:45:12
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Таблица для примера:
id_product |id_product_attribute |quantity
10100
1125
1225
1325
1425
2055
2115
2220
2320

Необходимо составить следующий запрос:
Значению "quantity" у которого "id_product" = 1 и "id_product_attribute" = 0, присвоить сумму значений поля "quantity" с "id_product" = 1 и "id_product_attribute" не равным 0.
17 Апрель 2016, 13:59:31
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Такое нужно делать в php. В Excel макрос создавать.
17 Апрель 2016, 14:05:12
Ответ #2
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Такое нужно делать в php. В Excel макрос создавать.
Не подскажете, как это будет выглядеть на php, если не сложно?
17 Апрель 2016, 14:26:36
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
if($id_product ==1 && !$id_product_attribute)
    $total += $quantity;
17 Апрель 2016, 14:43:40
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
if($id_product ==1 && !$id_product_attribute)
    $total += $quantity;
Если вам нужно учитывать кол-ко для id_product = 1  и id_product_attribute = 0, т.е. 100+25+25+25+25=200, тогда так
if($id_product ==1)
{
$total += (int)$quantity;
}
17 Апрель 2016, 14:51:13
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
if($id_product ==1 && !$id_product_attribute)
    $total += $quantity;
Если вам нужно учитывать кол-ко для id_product = 1  и id_product_attribute = 0, т.е. 100+25+25+25+25=200, тогда так
if($id_product ==1)
{
$total += (int)$quantity;
}

При проверки $id_product_attribute нужен. Это при сложении количества он не требуется. Смотри сам.

<?php
$arr
[1][0] = 100;
$arr[1][1] = 25;
$arr[1][2] = 25;
$arr[1][3] = 25;
$arr[1][4] = 25;
$arr[2][0] = 55;
$arr[2][1] = 15;
$arr[2][2] = 20;
$arr[2][3] = 20;

$total 0;

foreach(
$arr as $id_product => $arr1
{

foreach($arr1 as $k => $q
{
if($id_product == 1)
{
$total += (int)$q;
}
}
foreach($arr1 as $id_product_attribute => $quantity
{
if($id_product ==&& !$id_product_attribute)
$quantity $total;
echo $id_product ." -- ";
echo $id_product_attribute ." -- " $quantity;
echo "<br>";
}
   
echo "<hr>";
}

?>
17 Апрель 2016, 16:19:15
Ответ #6
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля

По сути смысл в том, чтобы суммировать количество товаров. На схеме выше есть 2 товара (id_product 1 и 2). У каждого товара несколько вариаций (id_product_attribute = 1, 2, 3, 4 и т.д.). А в quantity где id_product_attribute = 0 записывается сумма количеств товаров, т.е. 100 = 25+25+25+25 и 55 = 15+20+20.
17 Апрель 2016, 17:16:43
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
То же самое, немногго код измени.
<?php
$arr
[1][0] = 0;
$arr[1][1] = 25;
$arr[1][2] = 25;
$arr[1][3] = 25;
$arr[1][4] = 25;
$arr[2][0] = 0;
$arr[2][1] = 15;
$arr[2][2] = 20;
$arr[2][3] = 20;

function 
getTotal($id$ar)
{
$total 0;

foreach($ar as $k => $q
{
$total += (int)$q;
}
return $total;
}

foreach(
$arr as $id_product => $arr1
{

foreach($arr1 as $id_product_attribute => $quantity
{
if(!$id_product_attribute)
$quantity getTotal($id_product$arr1);;

echo $id_product ." -- ";
echo $id_product_attribute ." -- " $quantity;
echo "<br>";
}
   
echo "<hr>";
}
?>
17 Апрель 2016, 18:03:12
Ответ #8
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Попробую разобраться. Спасибо!