我希望加入2个表,其中包含其他表的前n个结果,如下所述。
OrderHeader
OH_Id OrderDate
----------------------
1 2014-06-01
2 2014-06-02
3 2014-06-03
4 2014-06-04
5 2014-06-05
OrderProducts
OP_Id OH_Id Quantity
------------------------------
1 1 1
2 1 2
3 2 1
4 3 3
5 4 4
6 4 1
7 4 2
8 5 2
9 5 1
我期待前3个订单(4行)的结果类似。
OH_Id OrderDate Op_Id Quantity
------------------------------------------------
1 2014-06-01 1 1
1 2014-06-01 2 2
2 2014-06-02 3 1
3 2014-06-03 4 3
注意:我正在寻找加入2个表而不是写为SP或循环查询。
答案 0 :(得分:0)
select top 3 o.oh_id, o.orderdate, oo.op_id, oo.quantity
from orderheader o
join orderproducts oo on o.oh_id = oo.oh_id
答案 1 :(得分:0)
如果您希望OrderHeader中的前3个订单号与OrderProducts中的所有相应行尝试此操作。
select o.oh_id
,o.orderdate
,oo.op_id
,oo.quantity
from (SELECT TOP 3 *
FROM orderheader
ORDER BY OH_ID --or Date etc...
) o
INNER JOIN orderproducts oo
on o.oh_id = oo.oh_id
答案 2 :(得分:0)
我认为你的描述令人困惑。你不想要前三名,因为它只会返回3行。你只需要它听起来像是ids 1-3。
SELECT *
FROM OrderHeader a
JOIN OrderHeader b on a.oh_id = b.oh_id
WHERE a.oh_id <= 3
答案 3 :(得分:0)
你必须使用像这样的子查询
SELECT * FROM OrderHeader
INNER JOIN OrderProducts ON OrderHeader.OH_Id = OrderProducts.OH_Id
WHERE OrderHeader.OH_Id IN (SELECT TOP 3 OH_Id FROM OrderHeader)
测试sql小提琴是here
希望这会有所帮助