2015-06-09 3 views
0

Я пытаюсь объединить несколько таблиц и заказать данные на основе общего столбца, который они разделяют. Ниже приведен пример:SQL Влияет на несколько таблиц и порядок по одному столбцу

Таблица A

pk itemId text 
    1 10  ordered 
    1 5  make 
    1 8  it 
    1 4  not 

Таблица B

pk itemId text variable 
    1 6  sense 94 
    1 1  this 99 
    1 2  text 98 

Таблица С

pk itemId text anotherVariable 
    1 3  does 97 
    1 7  unless 93 
    1 9  is  91 

мне нужен т он финальный стол, чтобы выглядеть следующим образом:

Таблица результатов

pk itemId text variable 
    1 1  this 99 
    1 2  text 98 
    1 3  does 97 
    1 4  not  NULL 
    1 5  make NULL 
    1 6  sense 94 
    1 7  unless 93 
    1 8  it  NULL 
    1 9  is  91 
    1 10  ordered NULL 

Я использую следующий запрос, но он не работает ...

SELECT * 
    FROM tableA as A 
    INNER JOIN tableB as B ON A.pk = B.pk 
    INNER JOIN tableC as C ON A.pk = C.pk 
    ORDER BY A.itemId, B.itemId, C.itemId 

Edit: добавил другая переменная, чтобы еще больше объяснить мою проблему, по всем таблицам у меня не всегда одинаковые имена столбцов во всех таблицах. В других таблицах могут быть разные столбцы, которые я хочу включить в таблицу результатов.

+0

Почему бы вам просто не сделать то, что вы говорите, что хотите сделать и заказать свои результаты по общему столбцу? –

+0

@DanBracuk С соединением нет 'shared [item] column' .. – user2864740

ответ

4

Использовать вместо UNION ALL.

SELECT pk, itemId, [text], variable = NULL FROM TableA UNION ALL 
SELECT pk, itemId, [text], variable FROM TableB UNION ALL 
SELECT pk, itemId, [text], anotherVariable FROM TableC 
ORDER BY pk, itemId 

До тех пор, пока у вас есть такое же количество столбцов во всех из SELECT заявлений, и все столбцы имеют одинаковый тип данных, UNION ALL должен работать.

Вот документация для UNION.

+0

@MikeK, ahaha. Классическая ошибка копирования-пасты. Спасибо! –

+0

@wewesthemenace Awesome! Это именно то, что мне нужно, спасибо! – kevlar90

+0

Без проблем, рад, что я мог бы помочь. –

Смежные вопросы