我正在编写一个数据库验证查询,它将检查基于两个不同表的表中的非唯一数据。我有三个表,下面描述了它们的数据。
- 客户可以有n个发票金额。**
- 客户和发票可以有一个子公司。**
数据
可定制
customerid. 1 | currencyid. 10
customerid. 2 | currencyid. 12
可开票
invoiceid. 1|customerid. 1| currencyid. 10
invoiceid. 2|customerid. 1| currencyid. 10
invoiceid. 3|customerid. 1| currencyid. 12
invoiceid. 4|customerid. 2| currencyid. 12
invoiceid. 5|customerid. 2| currencyid. 12
辅助表
type. customer| typeid. 1| subsidiaryid. 1
type. invoice| typeid. 1| subsidiaryid. 1
type. invoice| typeid. 2| subsidiaryid. 2
type. invoice| typeid. 3| subsidiaryid. 2
type. customer| typeid. 2| subsidiaryid. 2
type. invoice| typeid. 4| subsidiaryid. 2
type. invoice| typeid. 5| subsidiaryid. 2
示例
是否有一种方法可以编写查询来查找客户是否已将发票与非唯一子公司相关联?即,上述数据应返回错误,因为表中的第三个子公司具有另一个subsidiaryid,而前两个子公司具有另一个subsidiaryid,第四个子公司被忽略,因为它与另一种货币相关联。
预期结果
上面的查询应该返回customerid
1,因为它对客户和其中一张发票具有不同的子公司。Customerid 2对客户和与之关联的所有发票具有匹配的子公司。
1条答案
按热度按时间oknwwptz1#
要交叉引用两个表,一个简单的解决方案是以逗号分隔列表的形式使用多个表引用。
完成此操作后,您可以一次一行地比较
select...from
返回的值。要查找任何不一致,请首先检查
customer id
是否相同,然后检查currency
是否不同。架构(MySQL v8.0)
查询#1
| 投资|客户|Curr|
| - ------|- ------|- ------|
| 三个|1个|十个|
View on DB Fiddle