我有2个表,Property和PropertyImage。 1属性有多个图像T-SQL内连接内连接的第一个结果
我需要获取所有属性,每个属性只有1个PropertyImage。
有谁知道如何做到这一点?
Property: PropertyID, Name
PropertyImage: PropertyImageID, PropertyID, Source, Type
感谢
做到这一点我有2个表,Property和PropertyImage。 1属性有多个图像T-SQL内连接内连接的第一个结果
我需要获取所有属性,每个属性只有1个PropertyImage。
有谁知道如何做到这一点?
Property: PropertyID, Name
PropertyImage: PropertyImageID, PropertyID, Source, Type
感谢
做到这一点下面是一个示例,其中来自Property的所有记录被选中,并且来自PropertyImage的最后一条记录(假设id列是标识列,最后一条记录是您需要的记录)。您需要根据您的确切列名称和要求进行调整。
SELECT p.PropertyID, p.Name, pi.PropertyImageID, pi.Source, pi.Type
FROM Property p
INNER JOIN PropertyImage pi
ON pi.PropertyImageId = (SELECT MAX(sub.PropertyImageId)
FROM PropertyImage sub
WHERE sub.PropertyId = p.PropertyId)
编辑:在选择
加列名不起作用 - 它thorws错误在这里:WHERE sub.PropertyId = p.PropertyId – user441365
我不知道为什么不 - 每天使用同一选择的许多变化。你有错误还是没有结果? – Leons
关键字'WHERE'附近的语法错误。 – user441365
一种方法是
SELECT P.PropertyID, P.Name, max(PI.PropertyImageID)
from Property P
INNER JOIN PropertyImage PI
ON P.PropertyID = PI.PropertyID
GROUP BY P.PropertyID, P.name
示例数据和预期产出将有助于提供一个更完整的答案。
我需要得到来源和类型从PropertyImage – user441365
请参阅莱昂后;它得到了你的后。 – xQbert
;WITH PI
AS (SELECT *,
ROW_NUMBER() OVER (PARTITION BY PropertyID
ORDER BY (SELECT 0)) AS RN
FROM PropertyImage)
SELECT P.PropertyID,
P.Name,
PI.PropertyImageID,
PI.Source,
PI.Type
FROM Property P
JOIN PI
ON P.PropertyID = PI.PropertyID
WHERE PI.RN = 1
这是它 - 伟大的工作 – user441365
尝试 -
Select Property.PropertyID
FROM Property
INNER JOIN PropertyImage pi on pi.PropertyID = Property.PropertyID
WHERE pi.PropertyImageID = (SELECT MAX(PropertyImageID) FROM PropertyImage WHERE PropertyID = Property.PropertyID)
这应该只得到最高的 'PropertyImageID' 值PropertyImage。根据您的需要,您可以更改逻辑MAX(PropertyImageID)
。
你需要哪个'PropertyImage'结果?只是一个任意的或特定的? –
你想要哪个属性图片?你能给出propertyimage的表格结构吗? – xQbert
第一个很好 - 任何基本上 – user441365