2014-03-13 184 views
0

我有2個表。第一個保存一些購物清單的總價值,第二個表保存該清單中的產品。當一個購物清單與像列表號的一些信息(nrList這是某種形式的表ID)和產品該列表nrProducts上的號碼進行加總價值爲total表在一起,同時產品進入listproducts表。可以說有3個產品tomato,oranges and apples。他們都會共享相同的nrList,正如前面提到的,它就像列表ID一樣。比較兩個表的值

第一個表totals

CREATE TABLE IF NOT EXISTS `totals` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`nrList` int(11) NOT NULL, 
`nrProducts` int(11) DEFAULT NULL, 
`total` double NOT NULL, 
`data` date DEFAULT NULL, 
`ora` time DEFAULT NULL, 
`dataora` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`Operator` varchar(50) DEFAULT NULL, 
`anulat` tinyint(1) NOT NULL DEFAULT '0', 
PRIMARY KEY (`id`), 
UNIQUE KEY `id` (`id`) 
) 

二表listproducts

CREATE TABLE IF NOT EXISTS `listproducts` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`nrList` int(11) DEFAULT NULL, 
`product` varchar(50) DEFAULT NULL, 
`quantity` double DEFAULT NULL, 
`price` double DEFAULT NULL, 
`data` date DEFAULT NULL, 
`operator` varchar(50) NOT NULL, 
`anulat` tinyint(1) NOT NULL DEFAULT '0', 
PRIMARY KEY (`id`) 
) 

現在,我有兩件事情我想做的事情,他們都非常相似。 可以說,我有3 products.In的totals表名單會有一些信息一行,並與total=10$nrProducts=3nrList=1。在listproducts表我將有3行均具有nrList=1且各自具有price=3$,3$,4$。 現在,我要檢查以下內容: 1.That如果nrProducts=3值的話,我對我們的產品在其他表列表。 2.檢查第一個表中的總和是否等於第二個表中的產品總和(數量*價格SUM)

我已經完成了一些工作,但是我不知道下一步該怎麼做。 我設法用它來獲取產品從第二個表中的每個列表中的號碼:

SELECT nrList,operator,COUNT(*) as count FROM listproducts GROUP BY nrList 

但我不知道如何比較,如果該值是沒有做兩個查詢相同。

對於第二件事再說,我知道怎麼弄的總和,但我不知道如何把它們沒有做兩個單獨的查詢比較。

SELECT SUM(price*quantity) FROM `listproducts` WHERE nrList='10' and operator like '%x%' 

我也可以做一些事情,就像我在其他選擇中所做的一樣,這不是問題。

的問題是,我不知道該怎麼做我想做的事情在一個單一的選擇,而不是做兩個比較them.I'm在Java中這樣做,這樣我可以比較,但我想知道如果我能在單個查詢中做到這一點。

感謝和抱歉的長期職位。

回答

1

你可以嘗試這樣的事情:

SELECT totals.nrList, 
     IF (totals.nrProducts = t.nrProductsActual, 'yes', 'no') AS matchNrProducts, 
     IF (totals.total = t.totalActual, 'yes', 'no') AS matchTotal 
    FROM totals INNER JOIN 
     (SELECT nrList, 
       COUNT(*) AS nrProductsActual, 
       SUM(quantity*price) AS totalActual 
     FROM listproducts 
     GROUP BY nrList) AS t ON totals.nrList = t.nrList 
+0

酷,發現了一些新的東西,感謝您!謝謝 ! –