1

user、 、user_billingprofile、 の4 つのテーブルがuser_shippingprofileありuser_addressます。

ユーザー: userId、dateCreated
user_billingprofile: userId、住所
user_shippingprofile: userId、住所
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'テーブルが同じクエリで 2 回アクセスされる単純な結合を取得し、2 つの結果を分離する方法はありますか? できれば、ある種のテーブルプレフィックスを使用して...

私はここで少し迷っています。これを 2 つの別々のクエリで簡単に実行できることはわかっていますが、このようなことを 1 回で実行する方法を学びたいと思います。

ヘルプ/提案/指示は大歓迎です、ありがとう!.

4

1 に答える 1

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

それが役立つことを願っています!

于 2010-10-14T18:32:47.157 に答える