انضم إلى ثلاثة طاولات؟ خطأ في phpmyadmin
-
01-10-2019 - |
سؤال
أحاول استخدام استعلام على ثلاثة جداول وجدت في منشور آخر (المنشور رقم 5 هنا). عندما أحاول استخدام هذا في علامة التبويب SQL لأحد الجداول الخاصة بي في phpmyadmin ، فإنه يعطيني خطأ:
#1066 - Not unique table/alias: 'm'
الاستعلام الدقيق الذي أحاول استخدامه هو:
select r.*,m.SkuAbbr, v.VoucherNbr from arrc_RedeemActivity r, arrc_Merchant m, arrc_Voucher v
LEFT OUTER JOIN arrc_Merchant m ON (r.MerchantID = m.MerchantID)
LEFT OUTER JOIN arrc_Voucher v ON (r.VoucherID = v.VoucherID)
لست متأكدًا تمامًا من أنه سيفعل ما أحتاجه لأفعله أو أنني أستخدم النوع الصحيح من الانضمام (إن فهم SQL محدود جدًا في هذه المرحلة) ، لكنني كنت آمل على الأقل رؤية ما تم إنتاجه .
(ما أحاول القيام به ، إذا كان أي شخص يهتم بالمساعدة ، هو الحصول على جميع الأعمدة من ARRC_REDEEMACTIVATE ، بالإضافة إلى skuabbr من ARRC_MERCHANT حيث تتطابق معرفات التاجر في هذين الجدولين ، بالإضافة إلى vouchernbr من ARRC_VOUCHer حيث تتطابق القسائم في هذين الجدولين.)
تم تحريره لإضافة عينات الجدول
Table arrc_RedeemActivity
RedeemID | VoucherID | MerchantID | RedeemAmt
----------------------------------------------
1 | 2 | 3 | 25
2 | 6 | 5 | 50
Table arrc_Merchant
MerchantID | SkuAbbr
---------------------
3 | abc
5 | def
Table arrc_Voucher
VoucherID | VoucherNbr
-----------------------
2 | 12345
6 | 23456
من الناحية المثالية ، ما أود العودة إليه سيكون:
RedeemID | VoucherID | MerchantID | RedeemAmt | SkuAbbr | VoucherNbr
-----------------------------------------------------------------------
1 | 2 | 3 | 25 | abc | 12345
2 | 2 | 5 | 50 | def | 23456
المحلول
كانت المشكلة هي أن لديك مراجع جدول مكررة - والتي من شأنها أن تعمل ، باستثناء ذلك المتضمن مع تسلق الجدول.
إذا كنت ترغب في رؤية الصفوف فقط حيث توجد سجلات داعمة في كلا الجدولين ، فاستخدم:
SELECT r.*,
m.SkuAbbr,
v.VoucherNbr
FROM arrc_RedeemActivity r
JOIN arrc_Merchant m ON m.merchantid = r.merchantid
JOIN arrc_Voucher v ON v.voucherid = r.voucherid
سيظهر هذا فارغًا ل m
و v
المراجع التي لا تملك تطابق بناءً على معايير الانضمام:
SELECT r.*,
m.SkuAbbr,
v.VoucherNbr
FROM arrc_RedeemActivity r
LEFT JOIN arrc_Merchant m ON m.merchantid = r.merchantid
LEFT JOIN arrc_Voucher v ON v.voucherid = r.voucherid