java - 比较两个表中的值

标签 java mysql sql

我有两张 table 。第一个表保存一些购物 list 的总值(value),第二个表保存该列表中的产品。完成购物 list 后,总值(value)将与 list 编号(nrList 是某种 list ID)和编号等信息一起添加到 total 表中该列表中的产品数 nrProducts,同时产品进入 listproducts 表。假设有 3 个产品番茄、橙子和苹果。它们将所有共享相同的nrList,如前所述,它类似于列表ID。

第一个表总计:

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 种产品的列表。在 totals 表中,会有一行包含一些信息和 total=10$ nrProducts=3nrList=1。在 listproducts 表中,我将有 3 行,全部具有 nrList=1 并且每行都有 price =3$,3$,4$。 现在,我想要检查以下内容: 1.如果 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%'

我也可以做类似我在其他选择中所做的事情,这不是问题。

问题是我不知道如何在一个选择中做我想要的事情,而不是做两个并比较它们。我在java中做这个,所以我可以比较,但我想知道是否以及我如何在单个查询中做到这一点。

感谢并抱歉发了这么长的帖子。

最佳答案

你可以尝试这样的事情:

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

关于java - 比较两个表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366501/

相关文章:

mysql - 计算组数百分比(*)

sql - ALTER TABLE 语句与 FOREIGN KEY 约束冲突

mysql - 组织一系列项目的 SQL 语句,每组一个

java - IDE 中的 Release模式与 Debug模式

java - 在 DAO 实现类中实现默认的 JPA findAll 方法

java - Android http post 高级请求与主机上的正文

javascript - 如何通过onClick()函数保留highchart折线图 - php mysql

java - Apache HttpClient API 中的 CloseableHttpClient 和 HttpClient 有什么区别?

python mysql 重复 key 更新错误

sql - 用于存储自动化测试结果的 PostgreSQL 表