我有四张桌子,user
, user_billingprofile
, user_shippingprofile
, and user_address
.
user:用户 ID、创建日期
用户计费配置文件:用户ID、地址
用户运输资料:用户ID、地址
用户地址:随机地址废话
这是我必须一次性获取用户账单和运输资料的查询。
SELECT * FROM `user`
JOIN `user_billingprofile` ON `user`.`userId` = `user_billingprofile`.`userId`
JOIN `user_address` ON `user_billingprofile`.`currentAddress` = `user_address`.`addressId`
JOIN `user_shippingprofile` ON `user_shippingprofile`.`currentAddress` = `user_address`.`addressId`
JOIN `user_address` ON `user_shippingprofile`.`currentAddress` = `user_address`.`addressId`
我收到错误:#1066 - Not unique table/alias: 'user_address'
.
有没有一种方法可以采用简单的联接,在同一个查询中访问一个表两次,并将两个结果分开?最好带有某种表前缀...
我在这里有点迷失了。我知道我可以很容易地在两个单独的查询中完成此操作,但我想学习如何一次性完成这样的事情。
非常感谢任何帮助/建议/指导,谢谢!
你能发布你的表的结构吗?根据你的询问,我想说你需要考虑稍微改变一下。
也就是说,您可以通过添加表别名来修复当前查询,如下所示:
SELECT * FROM `user`
JOIN `user_billingprofile` ON `user`.`userId` = `user_billingprofile`.`userId`
JOIN `user_address` AS user_billing_address ON `user_billingprofile`.`currentAddress` = `user_address`.`addressId`
JOIN `user_shippingprofile` ON `user_shippingprofile`.`currentAddress` = `user_address`.`addressId`
JOIN `user_address` AS user_shipping_address ON `user_shippingprofile`.`currentAddress` = `user_address`.`addressId`
请注意AS
我添加的条款。您可能还需要为列添加别名(而不是SELECT *
你可能需要SELECT user_shipping_address.address AS user_shipping_address_value, user_billing_address.address AS user_billing_address_value ...
)
希望有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)