我猜这已经有一段时间了,因为我已经写了SQL,而且我被这个看似平凡的要求所困惑:我想一起加入一个父表和一个子表,并且通过名为“order”的字段来排列子列子表。SQL如何根据“订单”字段对子行进行排序?
假设你有一个question
表和question_answer
表:
question (question_id, question_text)
question_answer (answer_id, question_id, answer_text, display_order)
因此,对于每个问题可以有多个答案,每个答案都会有display_order
场。
下面是一些数据可能看起来:
question
--------
1, "How much milk should I add""
2, "About how fast was he going?"
question_answer
---------------
1, 1, "A little", 0
2, 1, "Moderate", 1
3, 1, "A lot", 2
4, 2, "Pretty slow", 0
5, 2, "Average", 1
6, 2, "Like a bat out of hell", 2
所以在接合时question
和question_answer
将呈现问题,它的每一个答案,但这些答案会在给出的display_order
,在答案中的所期望的结果对于一个问题。
一个简单的查询,如
select
q.question_text,
qa.answer_text
from
question q,
question_answer qa
where
q.question_id = qa.question_id
order by
qa.display_order
各种各样的结果通过display_order
设置所有的行,而不是由他们display_order
迈克尔
PL试图通过增加条款,以q.question_id的顺序,即'以通过q.question_id,qa.display_order'重复每个'question_answer' –
返回'question'数据是次优的(因为您发送通过网络连接多次相同的数据)。考虑在批处理语句中执行两个查询,这些查询从回答中分别提出问题,但由于它是批处理语句,因此不会出现过多的交谈或延迟。 – Dai