Sql Oracle按列值排序
我试图解释我的实时场景如下。我有两个表,我需要一个查询来返回基于课程值排序的学生。在下面的示例中,生成的学生ID将按2、3、1的顺序排列 STUDENT ID NAME PRIORITY STATUS 1 ABC 2 BCD 3 CDE 学生 ID名称优先级状态 1 ABC 公元前2年 3 CDE 变量 V_ID STU_ID键值 1姓名1 2.1**课程**MCA 3 1地点1 4姓名2 5.2**课程**BCA 6 2地点2 7 3姓名1 8 3**课程**FCA 9 3地点1 所需结果(排序后,以相同的排序顺序显示两个表中的数据): ID名称键值 2 BCD名称2 2 BCD**课程**BCA 2 BCD place place2 3 CDE名称1 3 CDE**课程**FCA 3 CDE place place1 1 ABC姓名1 1 ABC**课程**MCA 1 ABC place place1 谢谢你的帮助 谢谢,Sql Oracle按列值排序,sql,oracle,Sql,Oracle,我试图解释我的实时场景如下。我有两个表,我需要一个查询来返回基于课程值排序的学生。在下面的示例中,生成的学生ID将按2、3、1的顺序排列 STUDENT ID NAME PRIORITY STATUS 1 ABC 2 BCD 3 CDE 学生 ID名称优先级状态 1 ABC 公元前2年 3 CDE 变量 V_ID STU_ID键值 1姓名1 2.1**课程**MCA 3 1地点1 4姓名2 5.2**课程**BCA 6 2地点2 7 3姓名1 8 3**课程**FCA 9
Swamy.似乎您只需要使用常规联接,如下所示
SELECT student.id
from variable
join student
on variable.stu_id= student.id
where variable.key= '**course**'
order by variable.value asc
看起来您只需要使用一个常规连接,如下所示
SELECT student.id
from variable
join student
on variable.stu_id= student.id
where variable.key= '**course**'
order by variable.value asc
只需两次加入变量,一次用于获取订单,一次用于所有数据。订单的联接需要仅在学生和密钥上,以便所有记录都应用“排序顺序课程” 虽然我不确定你在课程后对每个学生进行了什么排序,以获得你的结果。关键是有一些道理,但如果没有硬编码的情况下,我无法得到你的结果
With student (ID, NAME, PRIORITY, STATUS) as (
SELECT 1, 'ABC', NULL, NULL FROM DUAL UNION ALL
SELECT 2, 'BCD', NULL, NULL FROM DUAL UNION ALL
SELECT 3, 'CDE', NULL, NULL FROM DUAL),
"VARIABLE" (V_ID, STU_ID, "KEY", "VALUE") as (
SELECT 1, 1, 'name', 'name1' FROM DUAL UNION ALL
SELECT 2, 1, '**course**', 'MCA' FROM DUAL UNION ALL
SELECT 3, 1, 'place', 'place1' FROM DUAL UNION ALL
SELECT 4, 2, 'name', 'name2' FROM DUAL UNION ALL
SELECT 5, 2, '**course**', 'BCA' FROM DUAL UNION ALL
SELECT 6, 2, 'place', 'place2' FROM DUAL UNION ALL
SELECT 7, 3, 'name', 'name1' FROM DUAL UNION ALL
SELECT 8, 3, '**course**', 'FCA' FROM DUAL UNION ALL
SELECT 9 , 3, 'place', 'lace1' FROM DUAL)
SELECT V.STU_ID, S.Name, V.Key, V.VALUE
FROM STUDENT S
INNER JOIN VARIABLE V
on S.ID = V.Stu_ID
LEFT JOIN VARIABLE V2
on S.ID = V2.Stu_ID and V2.Key = '**course**'
ORDER BY V2.Value, V.Key
只需两次加入变量,一次用于获取订单,一次用于所有数据。订单的联接需要仅在学生和密钥上,以便所有记录都应用“排序顺序课程” 虽然我不确定你在课程后对每个学生进行了什么排序,以获得你的结果。关键是有一些道理,但如果没有硬编码的情况下,我无法得到你的结果
With student (ID, NAME, PRIORITY, STATUS) as (
SELECT 1, 'ABC', NULL, NULL FROM DUAL UNION ALL
SELECT 2, 'BCD', NULL, NULL FROM DUAL UNION ALL
SELECT 3, 'CDE', NULL, NULL FROM DUAL),
"VARIABLE" (V_ID, STU_ID, "KEY", "VALUE") as (
SELECT 1, 1, 'name', 'name1' FROM DUAL UNION ALL
SELECT 2, 1, '**course**', 'MCA' FROM DUAL UNION ALL
SELECT 3, 1, 'place', 'place1' FROM DUAL UNION ALL
SELECT 4, 2, 'name', 'name2' FROM DUAL UNION ALL
SELECT 5, 2, '**course**', 'BCA' FROM DUAL UNION ALL
SELECT 6, 2, 'place', 'place2' FROM DUAL UNION ALL
SELECT 7, 3, 'name', 'name1' FROM DUAL UNION ALL
SELECT 8, 3, '**course**', 'FCA' FROM DUAL UNION ALL
SELECT 9 , 3, 'place', 'lace1' FROM DUAL)
SELECT V.STU_ID, S.Name, V.Key, V.VALUE
FROM STUDENT S
INNER JOIN VARIABLE V
on S.ID = V.Stu_ID
LEFT JOIN VARIABLE V2
on S.ID = V2.Stu_ID and V2.Key = '**course**'
ORDER BY V2.Value, V.Key
按“键”排序的
有什么问题?
你的查询在哪里?啊,那些可怕的键/值表。请显示所需的结果。同时显示您尝试过的查询,并解释您的问题所在。@ThorstenKettner是否有一种方法可以多次向上投票评论?:P@swampy课程值排序后,它需要按什么顺序排列?我看不到真正的模式,或者这有关系吗?按“键”排序有什么问题吗??你的查询在哪里?啊,那些可怕的键/值表。请显示所需的结果。同时显示您尝试过的查询,并解释您的问题所在。@ThorstenKettner是否有一种方法可以多次向上投票评论?:P@swampy课程值排序后,它需要按什么顺序排列?我看不出真正的模式,或者这有关系吗?谢谢你的快速回复。我的问题中遗漏了一些信息。对此我很抱歉。最后,查询应该按照查询返回的相同顺序返回两个表中的所有数据。感谢您的快速回复。我的问题中遗漏了一些信息。对此我很抱歉。最后,查询应该按照查询返回的相同顺序返回两个表中的所有数据。