Присоединяйтесь к трем столам? Ошибка в phpmyadmin.

StackOverflow https://stackoverflow.com/questions/3671957

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top