مساعدة في بناء جملة الاستعلام MySQL: خطأ #1066 - ليس جدول/اسم مستعار فريد
-
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 ...
)
امل ان يساعد!