Регистрация на основе той же колонки - PullRequest
0 голосов
/ 14 июля 2011

У меня есть две таблицы, такие как TableA и TableB.

Схема для Таблицы A:

     UoMID
     UoMName

Схема для таблицы B:

     ItemID
     ItemName
     UoMID
     D1_UoMID
     D2_UoMID
     D3_UoMID

Здесь я хочу присоединиться к обеим этим таблицам на основе UoMID в таблице A и UoMID, D1_UoMID, D2_UoMID и D3_UoMID в таблице B. Я хочу получить следующие столбцы:

     ItemName, UoMName, D1_UoMName, D2_UoMName and D3_UoMName

Как получить вышеуказанные столбцы? и Как мне определить UoMName для соответствующего UoMID, D1_UoMID, D2_UoMID и D3_UoMID?

Ответы [ 3 ]

3 голосов
/ 14 июля 2011

Используя псевдонимы , вы можете объединяться в одну и ту же таблицу несколько раз и различать результаты разных объединений.Попробуйте это:

SELECT
    ItemName,
    d0.UoMName,
    d1.UoMName as D1_UoMName,
    d2.UoMName as D2_UoMName,
    d3.UoMName as D3_UoMName
from TableB tb
join TableA d0 on d0.UoMID = tb.UoMID
join TableA d1 on d1.UoMID = tb.D1_UoMID
join TableA d2 on d2.UoMID = tb.D2_UoMID
join TableA d3 on d3.UoMID = tb.D3_UoMID;
2 голосов
/ 14 июля 2011
SELECT ta.UoMName, ta1.UoMName, ta2.UoMName ta3.UoMName 
FROM TableA AS ta, TableA AS ta1, TableA AS ta2, TableA AS ta3, TableB AS tb
WHERE ta.UoMID = tb.UoMID
AND ta.UoMID = tb.UoMID
AND ta1.UoMID = tb.D1_UoMID
AND ta2.UoMID = tb.D2_UoMID
AND ta3.UoMID = tb.D3_UoMID

Вы должны давать псевдонимы таблицам, если хотите использовать одну и ту же таблицу более одного раза.

1 голос
/ 14 июля 2011
SELECT 
     b.ItemName,
     (SELECT a1.UoMName FROM TableA a1 WHERE a1.UoMID = b.UoMID) as UoMName,
(SELECT a2.UoMName FROM TableA a2 WHERE a2.UoMID = b.D1_UoMID) as D1_UoMName,
(SELECT a3.UoMName FROM TableA a3 WHERE a3.UoMID = b.D1_UoMID) as D3_UoMName,
(SELECT a4.UoMName FROM TableA a4 WHERE a4.UoMID = b.D1_UoMID) as D3_UoMName,
FROM TableB b

Надеюсь, что это работает

...