1

我正在尝试对我在另一篇文章中找到的三个表查询使用连接(此处为第 5 篇文章)。当我尝试在 phpMyAdmin 中我的一个表的 SQL 选项卡中使用它时,它给了我一个错误:

#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_RedeemActivity 获取所有列,从 arrc_Merchant 获取 SkuAbbr,其中商家 ID 在这两个表中匹配,再加上来自 arrc_Voucher 的 VoucherNbr,其中 VoucherID 在这两个表中匹配。)

编辑添加表格样本

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
4

1 回答 1

2

问题是你有重复的表引用——这会起作用,除了这包括表别名。

如果您只想查看两个表中都有支持记录的行,请使用:

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

这将根据 JOIN 标准为不匹配的m和引用显示 NULL :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
于 2010-09-08T21:16:12.280 回答