Присоединяйтесь к трем столам? Ошибка в 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_redeemactivity, плюс Skuabbr из Arrc_Merchance, где Merchant IDS совпадает в этих двух таблицах, плюс 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