我需要返回分页结果,即来自名为properties的表中的第二个五个记录。这与此查询单独有效:
SELECT
Property_ID,
Property_Type,
Address_Line,
Area,
Postcode,
Weekly_Rate
FROM
dbo.Properties
WHERE
Area LIKE '%" + value + "%'
ORDER BY
Property_ID
OFFSET " + (start*end) + " ROWS
FETCH NEXT " + end + " ROWS ONLY"
上面的代码是用C#添加的。
但我还需要Images表中的第一个Image ID,它引用分页子集中返回的每条记录。
我尝试了一个FULL OUTER JOIN并且没有返回预期的内容,可能是因为每个属性有多个图像。
任何解决方案都会很棒!
由于
这似乎差不多有效,但它返回了一个错误:
SELECT
dbo.Properties.Property_ID, Property_Type, dbo.Images_Table.[URL]
FROM
dbo.Properties p
OUTER APPLY
(SELECT TOP 1 i.*
FROM dbo.Images_Table i
WHERE i.Property_ID = p.Property_ID
ORDER BY i.Image_ID) i
WHERE
p.Area LIKE '%po%'
ORDER BY
p.Property_ID
OFFSET 0 ROWS
FETCH NEXT 5 ROWS ONLY
这是返回的错误:
Msg 4104,Level 16,State 1,Line 1
无法绑定多部分标识符“dbo.Properties.Property_ID”。Msg 4104,Level 16,State 1,Line 1
无法绑定多部分标识符“dbo.Images_Table.URL”。
答案 0 :(得分:1)
您可以使用outer apply
:
SELECT . . . , i.??
FROM dbo.Properties p OUTER APPLY
(SELECT TOP 1 i.*
FROM images i
WHERE i.Property_ID = p.Property_ID
ORDER BY i.Image_ID
) i
WHERE p.Area LIKE '%" + value + "%'
ORDER BY p.Property_ID
OFFSET " + (start*end) + " ROWS
FETCH NEXT " + end + " ROWS ONLY";
这对你如何订购图像有点推测。您还需要从images
表中填写所需的列。