我有两个表,一个包含基本资源信息,包含列和值,如:
一个单独的exta关联值表,其中包含列和数据,如:
我要做的是写一个SQL查询,它将连接两个并生成一个由“order”键排序的结果,如下所示:
我不确定如何使我的加入工作,以便我可以拉取位置值,然后按同一个表中的顺序值拉出。
在你问之前,我不能重新设计数据库模式,我必须使用它。任何帮助非常感谢!
答案 0 :(得分:0)
试试这个
SELECT t1.RESOURCE_NO
,t1.NAME
,t2.VALUE
,t3.VALUE -- Included so that you can "see" the value
FROM table1 t1
INNER JOIN table2 t2
ON t1.RESOURCE_NO = t2.RESOURCE_NO AND t2.[KEY] = 'location'
INNER JOIN table2 t3
ON t1.RESOURCE_NO = t3.RESOURCE_NO AND t3.[KEY] = 'order'
ORDER BY t3.VALUE ASC
答案 1 :(得分:0)
这个总体思路应该有效(在Oracle下测试):
SELECT *
FROM TABLE1
JOIN TABLE2 TABLE2_ORDER
ON TABLE1.RESOURCE_NO = TABLE2_ORDER.RESOURCE_NO AND TABLE2_ORDER.KEY = 'order'
JOIN TABLE2 TABLE2_NONORDER
ON TABLE1.RESOURCE_NO = TABLE2_NONORDER.RESOURCE_NO AND TABLE2_NONORDER.KEY <> 'order'
ORDER BY
TABLE2_ORDER.VALUE
用简单的英语:
(当然,这假设每个TABLE1行有完全一个'order'值。如果不是这种情况,则此查询将“乘以”或“擦除”行。)