Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL:显示缺失数据的最简单方法_Mysql - Fatal编程技术网

Mysql SQL:显示缺失数据的最简单方法

Mysql SQL:显示缺失数据的最简单方法,mysql,Mysql,我正在使用一种销售工具。我们有一个客户表,我们有一个项目表。但是,只有在定价表中有客户和该商品的记录时,才允许客户购买该产品。有时此表中缺少记录,一些客户无法订购某些项目 我有一份客户名单(CustA、CustB、CustC)和一份项目清单(Item1、Item2、Item3)。我想看看这九种可能性的定价表记录是否不存在。我可以编写一个查询,显示定价记录存在的位置,但如果我只得到七条记录,我必须手动检查每一种可能性,以查找丢失的记录 Select PricingContractID, ItemK

我正在使用一种销售工具。我们有一个客户表,我们有一个项目表。但是,只有在定价表中有客户和该商品的记录时,才允许客户购买该产品。有时此表中缺少记录,一些客户无法订购某些项目

我有一份客户名单(CustA、CustB、CustC)和一份项目清单(Item1、Item2、Item3)。我想看看这九种可能性的定价表记录是否不存在。我可以编写一个查询,显示定价记录存在的位置,但如果我只得到七条记录,我必须手动检查每一种可能性,以查找丢失的记录

Select PricingContractID, ItemKey 
from PricingContracts 
where PricingContractID in (CustA, CustB, CustC) 
   and ItemKey in (Item1, Item2, Item3)
结果:

| CustA | Item1 |   
| CustB | Item1 |   
| CustA | Item3 |   
| CustA | Item2 |   
| CustB | Item3 |  
| CustC | Item2 |  
| CustC | Item3 |
我想查询哪些记录不存在

| CustB | Item2 |  
| CustC | Item1 |  
特别是,我希望将它放在一个数组中,在一个轴上有项目编号,在另一个轴上有客户编号,并且有记录存在的指示器

|   •   | Item1 | Item2 | Item3 |  
| CustA |   Y   |   Y   |   Y   |   
| CustB |   Y   |       |   Y   |   
| CustC |       |   Y   |   Y   |   

首先构建一个查询来选择所有可能的组合,然后在链接表上运行左连接。当您有空值时,您知道链接表中没有这样的行,并且可以读取列值

链接表上没有联接的查询:

SELECT
    item.name,
    customer.name
FROM
    item
JOIN
    customer;

+------+------+
| name | name |
+------+------+
| a1   | b4   |
| a2   | b4   |
| a3   | b4   |
| a1   | b5   |
| a2   | b5   |
| a3   | b5   |
| a1   | b6   |
| a2   | b6   |
| a3   | b6   |
+------+------+
SELECT
    item.name,
    customer.name,
    link.itemName,
    link.customerName
FROM
    item
JOIN
    customer
LEFT JOIN
    link ON item.name = link.itemName AND
            customer.name = link.customerName;

+------+------+----------+--------------+
| name | name | itemName | customerName |
+------+------+----------+--------------+
| a1   | b5   | a1       | b5           |
| a2   | b5   | a2       | b5           |
| a2   | b6   | a2       | b6           |
| a3   | b4   | a3       | b4           |
| a1   | b4   | NULL     | NULL         |
| a2   | b4   | NULL     | NULL         |
| a3   | b5   | NULL     | NULL         |
| a1   | b6   | NULL     | NULL         |
| a3   | b6   | NULL     | NULL         |
+------+------+----------+--------------+
然后在链接表上添加连接:

SELECT
    item.name,
    customer.name
FROM
    item
JOIN
    customer;

+------+------+
| name | name |
+------+------+
| a1   | b4   |
| a2   | b4   |
| a3   | b4   |
| a1   | b5   |
| a2   | b5   |
| a3   | b5   |
| a1   | b6   |
| a2   | b6   |
| a3   | b6   |
+------+------+
SELECT
    item.name,
    customer.name,
    link.itemName,
    link.customerName
FROM
    item
JOIN
    customer
LEFT JOIN
    link ON item.name = link.itemName AND
            customer.name = link.customerName;

+------+------+----------+--------------+
| name | name | itemName | customerName |
+------+------+----------+--------------+
| a1   | b5   | a1       | b5           |
| a2   | b5   | a2       | b5           |
| a2   | b6   | a2       | b6           |
| a3   | b4   | a3       | b4           |
| a1   | b4   | NULL     | NULL         |
| a2   | b4   | NULL     | NULL         |
| a3   | b5   | NULL     | NULL         |
| a1   | b6   | NULL     | NULL         |
| a3   | b6   | NULL     | NULL         |
+------+------+----------+--------------+
然后只需过滤所需的行:

SELECT
    item.name,
    customer.name,
    link.itemName,
    link.customerName
FROM
    item
JOIN
    customer
LEFT JOIN
    link ON item.name = link.itemName AND
            customer.name = link.customerName
WHERE
    link.itemName IS NULL;

+------+------+----------+--------------+
| name | name | itemName | customerName |
+------+------+----------+--------------+
| a1   | b4   | NULL     | NULL         |
| a2   | b4   | NULL     | NULL         |
| a3   | b5   | NULL     | NULL         |
| a1   | b6   | NULL     | NULL         |
| a3   | b6   | NULL     | NULL         |
+------+------+----------+--------------+

如果它们不存在,行中是否有
null
?不,只是没有记录。哦,废话。我知道每一步该怎么做。不知道我为什么不把它放在一起。非常感谢。