2013-03-07 2 views
0

У меня есть 2 таблицыКак я могу запросить это в базе данных?

Таблица 1

Positon | Name | Nickname | Address 
------------------------------------ 
    1 | 2 | 3  | 4 
    5 | 6 |   | 7 
    5 | 6 |   | 8 

Таблица 2

Detail_seq | Details 
-------------------- 
    1  | manager 
    2  | Jimmy 
    3  | Jim 
    4  | Chicago 
    5  | Supervisor 
    6  | Mike 
    7  | Vancouver 
    8  | New York 

и выход должен быть, как это или что-то

Position: Manager 
Name: Jimmy 
Nickname: Jim 
Address: Chicago 

Position: Supervisor 
Name: Mike 
Nickname: 
Address: Vancouver and New York 

не стесняйтесь задавать вопросы, если это не понятно.

заранее спасибо

+0

Зачем ставить свою деталь ils в отдельном столе, просто положите их в свой первый стол? – LukeHennerley

+0

ваш вывод действительно не ясен – DevelopmentIsMyPassion

+0

@TimSchmelter вы говорите правильно, но по крайней мере мы можем понять непонятный вопрос. –

ответ

1

Я думаю, что это то, что вы хотите:

SELECT Position=manager.details, 
     Name=Name.details, 
     Nickname=Nickname.details, 
     Address=Address.details 
FROM table1 t1 
     LEFT OUTER JOIN table2 manager 
        ON t1.positon = manager.detail_seq 
     LEFT OUTER JOIN table2 name 
        ON t1.name = name.detail_seq 
     LEFT OUTER JOIN table2 Nickname 
        ON t1.nickname = Nickname.detail_seq 
     LEFT OUTER JOIN table2 Address 
        ON t1.address = Address.detail_seq 

DEMO

+0

спасибо за помощь. действительно ценю это. престижность! – detweiller

1

Это немного экстремальный для хранения данных таким образом. Я могу предложить вам хранить категории данных в разных таблицах. но если вы настаиваете, то это должно работать

SELECT d1.details, d2.details, d3.details, d4.details 
FROM main m, details d1, details d2, details d3, details d4 
WHERE m.position = d1.detail_seq 
AND m.name  = d2.detail_seq 
AND m.nickname = d3.detail_seq 
AND m.adress = d4.detail_seq 
+0

Нет, этого не должно быть, никнейм пуст на две строки, поэтому вам нужно 'LEFT JOIN', а не' INNER JOIN'. –

+0

Справа вы:) – Doruk

1

Вы должны присоединиться к таблице данных один раз для каждой детали:

SELECT pos.Details, name.details, nick.details, adress.details 
    FROM table1 t1 
    LEFT JOIN table2 pos  ON pos.detail_seq = t1.position 
    LEFT JOIN table2 name ON name.detail_seq = t1.name 
    LEFT JOIN table2 nick ON nick.detail_seq = t1.nickname 
    LEFT JOIN table2 address ON address.detail_seq = t1.address 
0
select (select details from t2 where t2.detail_seq=t1.position) position, 
     (select details from t2 where t2.detail_seq=t1.name) Name, 
     (select details from t2 where t2.det_seq=t1.nickname) nickname, 
     (select details from t2 where t2.det_seq=t1.address) address 
from t1 ; 
+0

спасибо, ребята .. все ваши ответы дают мне эту идею. – detweiller

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