我在库存系统中工作,需要在仓库中显示所有产品,每个产品的存在都显示为每个产品存在的结果(存在)(在表PRODUCTOS ,我在每个产品的条形码编号中使用GROUP BY)减去每个产品的商品销售(cantidad)的结果(在表VENTAS )
该协议代码的一部分:
$existe = $row['existe'];
$vendidos = $row['cantidad'];
$tExiste = $existe - $vendidos;
问题是,当表格VENTAS 在每个条目中显示多个具有相同代码的产品时...当它只显示一个产品代码或名称时,列表会显示结果我需要。
我在表格中看到了问题VENTAS 我添加了另一个与该表中已有产品的销售
致命错误:带有消息的未捕获异常'PDOException' 'SQLSTATE [21000]:基数违规:1242子查询返回更多 超过1行(63):PDO->查询('SELECT F.foto,...')#1 {main}抛出 第63行/xxxxx/productos.php
我的两张表中有两个问题:
第一个PRODUCTOS表:
VENTAS TABLE:
这里是代码:
$sql = "SELECT F.foto, P.id_p, P.cod, P.nombreProd, P.cat, P.subcat,
SUM(P.existencia) AS existe, P.vineta, P.dnm, P.compra, P.venta, P.f_vencimiento,
P.alert_cantidad, P.descuento1, P.descuento2, SUM(V.cantidad) AS cantidad,
(SELECT foto FROM FOTOSP WHERE codF = cod)
AS foto, (SELECT cantidad FROM VENTAS WHERE codV = cod)
AS CANTIDAD FROM PRODUCTOS P
LEFT JOIN FOTOSP F ON P.cod = F.codF
LEFT JOIN VENTAS V ON P.cod = V.codV
GROUP BY cod ORDER BY id_p DESC";
$result = $conn->query($sql); // HERE IS THE LINE 63
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
$existe = $row['existe'];
$vendidos = $row['cantidad'];
$tExiste = $existe - $vendidos;
这是表体的一部分:
<td><?php echo $row['cod']; ?></td>
<td><?php echo $row['nombreProd']; ?></td>
<td><?php echo $tExiste; ?></td> // HERE NEED TO SHOW THE RESULT OF THE SUBTRACT
<td><?php echo $row['compra']; ?></td>
<td><?php echo $row['venta']; ?></td>
修改
当我在子选择中添加GROUP BY codV时,错误消失了
(SELECT cantidad FROM VENTAS WHERE codV = cod GROUP BY codV) AS CANTIDAD
但问题是产品不止一次......而不是使减法(35 - 18 = 17)显示52 ...... ???
显然它将35乘以2并且它们会减去。
35 * 2 = 70 // the existence in table PRODUCTOS IS 35 NOT 70 (35*2), why is multiplying itself?
-18 = 52 // 18 is the result of SUM(13+5) because are two times in the table
表VENTAS中的其他产品也是SUM数量(cantidad)
24 - // the existence in table PRODUCTOS
10+10 = 4 // the quantity sold is 10 and in the table is only one time...not 20(10+10)