私は2つのテーブルPropertyとPropertyImageを持っています。 1プロパティに複数の画像がありますT-SQLの内部結合最初の内部結合の結果
プロパティごとにPropertyImageを1つだけ取得する必要があります。
誰でもその方法を知っていますか?これを行うには
Property: PropertyID, Name
PropertyImage: PropertyImageID, PropertyID, Source, Type
おかげ
私は2つのテーブルPropertyとPropertyImageを持っています。 1プロパティに複数の画像がありますT-SQLの内部結合最初の内部結合の結果
プロパティごとにPropertyImageを1つだけ取得する必要があります。
誰でもその方法を知っていますか?これを行うには
Property: PropertyID, Name
PropertyImage: PropertyImageID, PropertyID, Source, Type
おかげ
ここでは、ID列がID列であり、最後のレコードが必要なものであると仮定して、Propertyからのすべてのレコードが選択され、PropertyImageの最後のレコードが使用される例を示します。正確な列名と要件に基づいて調整する必要があります。
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)
EDIT:選択
は動作しません - ここではエラーが発生します: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
Leons postを参照してください。それはあなたの後に何を持っています。 – 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
試しに列名を追加しました - 唯一の最高の 'PropertyImageID' の値でPropertyImageを取得する必要があります
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)
。必要に応じてMAX(PropertyImageID)
ロジックを変更することができます。
どのPropertyImage結果が必要ですか?ちょうど任意の1つまたは特定のもの? –
あなたはどんなプロパティイメージをしたいですか?あなたはpropertyimageのテーブル構造を与えることができますか? – xQbert
最初のものは大丈夫です - 基本的には – user441365