【发布时间】:2019-08-03 21:22:33
【问题描述】:
尝试根据匹配的列信息从另一个表中减去剩余的数量
t1 (id,complete)
t2 (id,t1_id,qty,size,desc)
t3 (id,t1_id,qty,size,desc)
t4 (id,size)
t5 (id,desc)
t1 包含主要的“工作”以及它是否完整
t2 包含“中的项目”
t3 包含“items out”
t4 包含“项目大小”
t5 包含“项目描述”
示例数据:
t1 (id=300,complete=0)
t1 (id=350,complete=1)
t2 (id=1,t1_id=300,qty=20,size=1,desc=3)
t2 (id=2,t1_id=300,qty=10,size=2,desc=1)
t2 (id=3,t1_id=350,qty=10,size=2,desc=1)
t3 (id=1,t1_id=300,qty=7,size=1,desc=3)
t3 (id=2,t1_id=300,qty=9,size=2,desc=1)
t4 (id=1,size="3.5 inch")
t4 (id=2,size="4.5 inch")
t5 (id=1,desc="Drill")
t5 (id=3,desc="Flow")
预期输出:
QTY: 13 3.5 inch Flow Remaining
QTY: 1 4.5 inch Drill Remaining
注意 t1 id 350 是完整的,这就是它不显示的原因。
$sql = "
SELECT
t1.id AS main_id,
t2.t1_id,
t2.qty,
t2.size,
t2.desc,
t3.t1_id,
t3.qty,
t3.size,
t3.desc,
t4.size,
t5.desc
SUM(t2.qty-t3.qty) AS remaining,
JOIN t2 ON t1.id=t2.t1_id
JOIN t3 ON t1.id=t3.t1_id
JOIN t4 ON t2.size=t4.id
JOIN t5 ON t2.desc=t5.id
JOIN t4 ON t3.size=t4.id
JOIN t5 ON t3.desc=t5.id
WHERE
(t1.complete != 1) AND (t2.size = t3.size) AND (t2.desc=t3.desc)
ORDER BY t4.size ASC, t5.desc ASC ";
$result = $conn->query($sql);
if ($result->num_rows > 0){
while($row = $result->fetch_assoc()){
echo "$row['remaining']";
}
}
【问题讨论】: