مساعدة في بناء جملة الاستعلام MySQL: خطأ #1066 - ليس جدول/اسم مستعار فريد

StackOverflow https://stackoverflow.com/questions/3936275

  •  30-09-2019
  •  | 
  •  

سؤال

لدي أربعة طاولات ، user, user_billingprofile, 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'. هل هناك طريقة لاتخاذ وصلة بسيطة حيث يتم الوصول إلى جدول مرتين في نفس الاستعلام ، وفصل النتيجتين؟ ويفضل مع نوع من بادئة الجدول ...

أنا ضائع قليلاً هنا. أعلم أنه يمكنني القيام بذلك في اثنين من استفسارات sepparate بسهولة تامة ، لكنني أود أن أتعلم كيف أفعل أشياء مثل هذه في طلقة واحدة.

أي مساعدة/اقتراحات/اتجاه موضع تقدير كبير ، شكرًا لك!.

هل كانت مفيدة؟

المحلول

هل يمكنك نشر بنية طاولاتك؟ بناءً على استفسارك ، أقول إنك بحاجة إلى التفكير في تغييره قليلاً.

ومع ذلك ، يمكنك إصلاح استعلامك الحالي عن طريق إضافة اسم مستعار جدول مثل:

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

امل ان يساعد!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top