【问题标题】:Missing value on Access-SQL query with Left Join on two criteria在两个条件上使用左连接的 Access-SQL 查询中缺少值
【发布时间】:2012-11-19 16:54:48
【问题描述】:

我在查询时遇到问题,并且对正在发生的事情没有任何想法。我有一张桌子 T1:

StoreID Product ProductShipped
KH00137 Super   18
KH00137 Regular 12

还有另一个表 T2,它只共享几个 StoreID:

StoreID Product Other data…
KH00137 Super   …
KH00137 Regular …

我正在尝试使用以下查询在 StoreID 和 Product 上离开 T2:

SELECT T1.StoreID, T2.StoreID, T1.Product, T1. ProductShipped
FROM T1 LEFT JOIN T2 ON (T1.Product = T2.Product) AND (T1.StoreID = T2.StoreID);

但由于某种原因,它不显示 T2 StoreID 字段之一,即使它似乎已成功加入另一个:

T1.StoreID  T2.StoreID  T1.Product  T1.ProductShipped
KH00137                 Super       18
KH00137     KH00137     Regular     12

有什么想法吗?

【问题讨论】:

    标签: sql join criteria


    【解决方案1】:

    没有理由假设它已成功加入。输出数据的第一行中的三个非 NULL 字段中的每一个都来自 table1。

    这向我表明实际上根本没有加入。

    • 测试您的数据是否存在空格和大写/小写不匹配。


    使用LENGTH() 类型的函数可能会显示一个字符串实际上与另一个字符串不同。 (一个 Super 可能有 5 个字符长,另一个表中的 Super 可能在末尾有一个空格并有 6 个字符长。或者在 StoreID 中可能有类似的东西?) p>

    另外,这也是支持加入文本字段的原因之一。通过将外键 ID 保留为数字(例如整数),您几乎不会经常遇到此问题,即使您这样做也很容易调试和纠正。

    祝你好运。

    【讨论】:

    • 在“doh”时刻,产品类型(我为上面的帖子更改了)在某些地方使用英国拼写,在其他地方使用美国拼写。所以我已经纠正了它,现在它完美地加入了。将考虑关于加入文本字段的观点。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多