我正在尝试在另一篇文章(帖子#5 here)中找到的三个表查询中使用连接。当我尝试在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
答案 0 :(得分:1)
问题是你有重复的表引用 - 这可以工作,除了包括表别名。
如果您只想查看两个表中都有支持记录的行,请使用:
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
和v
引用,这将显示NULL:
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