2016-10-20 2 views
0

Я хочу присоединиться к таблице order с таблицей invoice, поэтому я получаю ord_ref и fah_nr слитые в том же наборе результатов. Может кто-нибудь помочь мне с запросом?Соедините столы с разными ID

Таблица Заказать

ord_nr ord_dept ord_date ord_customer ord_anlegg ord_ref 
17264   7 2005-11-16 52815   2005  55 
18132   7 2008-08-30 58087   2008  527 

Таблица Счет

fah_nr fah_customer fah_ordre fah_anlegg fah_avdeling 
68903  52815  17264  2005  7 
69616  53796  18132  2008  7 

Выход

Ord_nr fah_ordre  fah_anlegg fah_nr ord_ref 
17264 17264   2005  68903  55 
18132 18132   2008  69616  527 
+1

Простое соединение. Что вы пробовали? – jarlh

+2

Какая ошибка вы получаете? Как выглядит ваш запрос? –

+0

Пожалуйста, пометьте базу данных, которую вы используете – NzGuy

ответ

1

Если я понял ваши требования правильно, то вы можете ищете простое соединение

SELECT o.Ord_nr,i.fah_ordre,fah_anlegg,fah_nr,ord_ref 
FROM [Order] o 
INNER JOIN Invoice i ON o.ord_nr = i.fah_ordre 
+0

Обратите внимание, что ORDER является зарезервированным ключевым словом в SQL, и это очень плохое имя для таблицы. Тем не менее, он может использоваться, но требует выхода; в этом ответе используется '[Order]', совместимый с MS SQL Server. Другие диалекты SQL могут отличаться, например, ''Order'' или' 'Order '' – MatBailie

+1

@MatBailie, а ANSI SQL имеет двойные кавычки, например. ' "Заказ"'. MS SQL Server также поддерживает это. – jarlh

+0

Согласитесь с @jarlh MS SQL Server также поддерживает это. -Thanks Jarlh –

0

Должно быть довольно простое соединение. Просто выберите нужные значения, а затем сделать левое соединение или внутреннее соединение

Вот пример с INNER JOIN

SELECT 
    Order.ord_nr AS ord_nr, 
    Invoice.fah_ordre AS fah_ordre, 
    Invoice.fah_anlegg AS fah_anlegg, 
    Invoice.fah_nr AS fah_nr, 
    Order.ord_ref AS ord_ref 
FROM 
    Order 
INNER JOIN 
    Invoice 
ON 
    Order.ord_nr = Invoice.fah_ordre 

Вот пример с LEFT JOIN

SELECT 
    Order.ord_nr AS ord_nr, 
    Invoice.fah_ordre AS fah_ordre, 
    Invoice.fah_anlegg AS fah_anlegg, 
    Invoice.fah_nr AS fah_nr, 
    Order.ord_ref AS ord_ref 
FROM 
    Order 
LEFT JOIN 
    Invoice 
ON 
    Order.ord_nr = Invoice.fah_ordre 

Разница в два, заключается в том, что если запись существует только в одной из таблиц, то LEFT JOIN все равно даст вам результат, но INNER JOIN не будет.

(Отредактировано и удалено старое неявное соединение, которое устарело)

+1

Не поощряйте людей использовать этот старый, неявный синтаксис соединения. Научитесь им делать явные объединения с самого начала. – jarlh

+1

@jarlh Вы, конечно, правы, я редактировал свой пример и удалял устаревший пример. – MartinMouritzen

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