2014-01-11 3 views
0

У меня возникли трудности с запросом следующего:Формулировка запроса select

имя_таблицы = Счет

ИМЯ | AccountCode | ParentAccountCode

John | A1 | NULL

Filip | A2 | A1

Я хочу, чтобы один запрос, чтобы выбрать 2 колонки

первый столбец = Имя
второй столбец = ParentAccountName (выборочная)

колонна ParentAccountName заполняется с именем, которые представляют это код.

Так Filip имеет ParentAccountCode A1, который Джон, поэтому значение в пользовательской колонке ParentAccountName должен быть «Джон»

Это должно быть что-то вроде

Я получаю это так:

> SELECT A.Name, AA.Name AS ParentAccountName FROM Account AS A 
>  INNER JOIN Account AS AA 
>  ON A.ParentAccountNumber = AA.AccountNumber WHERE A.AccountNumber = 'A2' 

Каковы результаты в ParentAccountName = John. Так что это хорошо, но когда выберете, где AccountNumber = A1, он не покажет мне результаты.

Как я могу заставить SQL дать мне набор результатов, даже если ParentAccountName = null?

ответ

0

Может быть, вам нужно сделать автообъединение:

SELECT T1.Name, T2.Name AS ParentAccountName 
FROM Account T1 INNER JOIN Account T2 ON (T2.Account = T1.ParentAccountCode) 
1

Вам нужно левое внешнее соединение, а не внутреннее соединение.

SELECT A.Name, AA.Name AS ParentAccountName FROM Account AS A 
LEFT OUTER JOIN Account AS AA 
ON A.ParentAccountNumber = AA.AccountNumber 
+0

Yup! Это сделал трюк! Спасибо большое mscoon и извините за мою нобость ... :) –

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