#php #mysql
#php #mysql
Вопрос:
Я хочу, чтобы служба поддержки нашла общее количество каждого товара в 2 разных магазинах, как вы можете видеть, прикрепив две таблицы ниже, используя Php.
этот код, который я пробовал, не работает, но он дает мне только общее количество товара, как вы можете видеть во второй таблице вывода, но не общее количество для каждого магазина
<table class="table" id="manageStockStatus">
<thead>
<tr>
<th>Product Name</th>
<th>Qty-office</th>
<th>Qty-Yard</th>
<th>T-Qyt</th>
<th>Size/Type</th>
</tr>
<?php
$sql = "SELECT SUM(quantity) AS Tq, (SELECT product_name
from product where stock.product_id=product_id) as pname FROM `stock` GROUP BY product_id ";
$result = $connect->query($sql);
while($row = $result->fetch_array()) {
$Productname=$row['pname'];
$Tqnty=$row['Tq'];
// $Tqnty=$row['Tq'];
// $office=$row[];
// $yard=$row['yard'];
?>
</thead>
<td><?php echo $Productname;?> </td>
<td><!-- <?php echo $office;?> --></td>
<td><!-- <?php echo $yard;?> --></td>
<td><span class="badge"><?php echo $Tqnty; ?></span></td>
<td></td>
</tr>
<?php }?>
</table>
<!-- /table -->
</div> <!-- /panel-body -->
</div> <!-- /panel -->
</div> <!-- /col-md-12 -->
Ответ №1:
Попробуйте использовать левое соединение и выполнить group by stock.product_id,store
:
SELECT stock.product_id as id,product_name as pname,store,SUM(quantity) AS Tq
FROM `stock` left join product on stock.product_id=product.product_id
group by stock.product_id,store
Таким образом, в вашем цикле while вы можете иметь:
while($row = $result->fetch_array()) {
$Productname=$row['pname'];
$Tqnty=$row['Tq'];
$office=$row['store'];
?>
Редактировать
Тогда вы можете использовать ПРИМЕР, подобный этому:
SELECT stock.product_id as id,product.product_name as pname,
sum(case
when store=1 then quantity
else 0
end) as office,
sum(case
when store=2 then quantity
else 0
end) as yard
FROM `stock` left join product on stock.product_id=product.product_id
group by stock.product_id,product.pname
Таким образом, в вашем цикле while вы можете иметь:
while($row = $result->fetch_array()) {
$Productname=$row['pname'];
$yard=$row['yard'];
$office=$row['office'];
$Tqnty=$office $yard;
?>
Комментарии:
1. Спасибо @nacho, но как я могу отобразить количество в офисе и количество во дворе? смотрите второй скриншот, прикрепленный выше
2. он выдает идентификатор магазина, а не количество названия продукта,, можем ли мы отобразить количество продукта в офисе и на складе, и если количество отсутствует, оно может отображать 0 относительно названия продукта? @nacho
3. основная концепция здесь заключается в том, чтобы иметь количество офиса и двора и общее количество (офис двор) относительно products_id
4. Откуда берется Q Yard?
5. Магазин = 1 — это офис, а магазин = 2 — это двор