2010-10-14 63 views
1

我有四個表,user,user_billingprofile,user_shippingprofileuser_address幫助MySQL查詢語法:錯誤#1066 - 非唯一表/別名

用戶:用戶id,dateCreated會
user_billingprofile:用戶id,地址
user_shippingprofile:用戶id,地址
user_address:隨機地址的垃圾

下面是該查詢我得一次性完成用戶計費和運輸配置文件。

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'有沒有辦法讓一個簡單的連接在同一個查詢中兩次訪問一個表,並將兩個結果分開?最好用某種表格前綴...

我在這裏有點迷路。我知道我可以很容易地在兩個一致的查詢中做到這一點,但我想學習如何一次完成這樣的事情。

任何幫助/建議/方向非常感謝,謝謝!

回答

3

你可以發表你的表結構嗎?根據你的查詢,我會說你需要考慮改變一下。

這就是說,你可以通過添加表別名,像這樣解決您的當前查詢:

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 ...

希望幫助!

+0

謝謝!這工作 – 2010-10-14 19:00:14

+0

沒問題。感謝你的接納 – Cfreak 2010-10-14 20:05:10

相關問題