Mysql
查找總計不匹配的行
MariaDB MySQL
嘗試在兩個表上執行看似基本查詢(連接)的操作。
收據
部分
當每個小計的總計
parts.receipt_id
不等於時,嘗試從第一個表中獲取該行receipts.id.total
。我的屠殺嘗試包括:
SELECT `receipts`.* FROM `receipts` LEFT JOIN ON `receipts`.`id`=`parts`.`receipt_id` WHERE SUM(`parts`.`subtotal`) != `receipts`.`total` GROUP BY `parts`.`receipt_id`;
目前在 PHP 中使用 compare 的工作(非常低效)。
您可以使用子查詢,只要它們只返回 1 個值(行)
SELECT r.* FROM receipts r WHERE (SELECT SUM(parts.subtotal) FROM parts WHERE receipt_id = r.id) != r.total;
如您所見,這很有效。
如果您的數據有其他設計,請提供更改後的 dbfille
CREATE TABLE receipts (id int, `date`date, supplier varchar(10), total DECIMAL(10,2))
INSERT INTO receipts VALUES (1,NOW(),'a',100.1),(2,NOW(),'b',200.2)
CREATE TABLE parts (id int, receipt_id int , partType varchar(10), subtotal DECIMAL(10,2))
INSERT INTO parts VALUEs (1,1,'a',20.0),(2,1,'a',20.0),(3,1,'a',20.1),(4,1,'a',20.0),(2,1,'a',20.0), (6,2,'a',50.0),(7,2,'a',150.0)
SELECT r.* FROM receipts r WHERE (SELECT SUM(parts.subtotal) FROM parts WHERE receipt_id = r.id) != r.total;
編號 | 日期 | 供應商| 全部的 -: | :--------- | :------- | -----: 2 | 2021-06-17 | 乙 | 200.20
SELECT r.* , (SELECT SUM(parts.subtotal) FROM parts WHERE receipt_id = r.id) sumsubtotal FROM receipts r
編號 | 日期 | 供應商| 總計| 總和小計 -: | :--------- | :------- | -----: | ----------: 1 | 2021-06-17 | 一個 | 100.10 | 100.10 2 | 2021-06-17 | 乙 | 200.20 | 200.00
db<>在這裡擺弄