2013-03-07 39 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

为什么把你的详细信息在一张独立的桌子里,把它们放在你的第一张桌子上? – LukeHennerley 2013-03-07 09:40:28

+0

你的输出真的不清楚 – DevelopmentIsMyPassion 2013-03-07 09:41:08

+0

@TimSchmelter你说得对,但至少我们可以理解不清楚的问题 – 2013-03-07 09:46:00

回答

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 2013-03-08 03:37:02

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'。 – 2013-03-07 10:00:46

+0

你是对的;) – Doruk 2013-03-07 10:03:40

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 2013-03-08 02:10:42

相关问题