我正在尝试加入三个表格,以生成所有用户及其位置的列表。
第一个表列出了我们所有具有两个独立ID的用户 - userId和uid。第二个表是“订单”表,其中用户位置数据(交付区和计费区)由uid存储,并且我们有第三个表充当位置密钥(例如,zone_id 18 = zone_name Florida)。
我想要的是每个userId,以及每个用户的结算区域和交付区域的转换后的人类可读zone_name。
当我尝试转换其中一个区域时,我的代码工作正常。所以这个查询效果很好:
SELECT u.userId, o.delivery_postal_code, o.billing_postal_code, z1.zone_name
FROM webapp.users AS u
LEFT OUTER JOIN practice_drupal.uc_orders AS o
ON u.uid = o.uid
LEFT OUTER JOIN practice_drupal.uc_zones AS z1
ON o.billing_zone = z1.zone_id;
但是当我尝试为第二个区域(交付)生成zone_name时出现错误。错误是“字段列表”中的“未知列'z2.zone_name'”。这是我的疑问:
SELECT u.userId, o.delivery_postal_code, z1.zone_name, o.billing_postal_code, z2.zone_name
FROM webapp.users AS u
LEFT OUTER JOIN practice_drupal.uc_orders AS o
ON u.uid = o.uid
LEFT OUTER JOIN practice_drupal.uc_zones AS z1
ON o.billing_zone = z1.zone_id;
LEFT OUTER JOIN practice_drupal.uc_zones AS z2
ON o.delivery_zone = z2.zone_id;
我很困惑,因为我的场景看起来几乎与这个场景相同,但使用外连接除外,但我无法让bluefeet的解决方案适合我:SQL Inner-join with 3 tables?
有什么想法吗?谢谢!