鉴于这些表格:
GroupA,
GroupB(with a FK to GroupA.Id),
GroupC (with a FK to GroupB.Id and Image.Id),
Image
我正在尝试使用嵌套选择来循环遍历每个组A,选择第一个具有匹配FK的GroupB,选择组B中的第一个C组,然后从Images表中选择一个字段。
这是一个网页,我将为每个GroupA输出以下内容
<h2>GroupA.Title...
<img src=Images.ImageUrl...
但为了做到这一点,我需要拉出Top GroupB,它将拉出Top Group C,从而获得内部连接上的图像。
我非常确定嵌套选择不是前进的方式(第一个嵌套语句有效,但下一个嵌套语句不能使用第一个嵌套语句的结果)。有人能指出我正确的方向吗?我确信这是一种正确的方法。
编辑:示例数据结构
GroupA {GroupAId,Title}
GroupB {GroupBId,FKGroupAId}
GroupC {GroupCId,FKGroupBId, FKImageId}
Image {ImageId,ImageUrl}
因此.... 如果他们是单独的查询我可以
从GroupA中选择* - 并循环通过GroupA并选择一个Top1 GroupB,其中GroupB.FKGroupAId = GroupA.GroupAId;
然后我会选择前1组C,其中GroupC.FKGroupBID = GroupB.GroupBId,图像上带有内连接。
我想要得到的每个GroupA图像的2个选择=太多。
答案 0 :(得分:0)
这样的事情能做你想做的吗?
SELECT a.Id, (
SELECT TOP 1 i.myColumn
FROM GroupB b
INNER JOIN GroupC c ON b.id = c.bId
INNER JOIN Image i ON c.imageid = i.id
WHERE a.id = b.aId
ORDER BY b.id, c.id
) AS myColumn
FROM GroupA a
如果没有子查询,可能还有更好的方法。