سؤال

أحاول استخدام استعلام على ثلاثة جداول وجدت في منشور آخر (المنشور رقم 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top