SQL 3表连接无法识别的列

时间:2015-07-23 21:57:25

标签: mysql sql join

我正在尝试加入三个表格,以生成所有用户及其位置的列表。

第一个表列出了我们所有具有两个独立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?

有什么想法吗?谢谢!

0 个答案:

没有答案