g.house_IDをDistinctとして選択しようとしています。下のクエリで返される値はg.house_idに基づいて一意になります。Distinct SQL
ハウスIDに値1のレコードが3つある場合、ハウスIDの1番目のエントリだけが返され、3行は返されません。
SELECT r.*, g.*
FROM house r, pic_gallery g
WHERE r.house_id = 1 AND r.house_id = g.house_id
g.house_IDをDistinctとして選択しようとしています。下のクエリで返される値はg.house_idに基づいて一意になります。Distinct SQL
ハウスIDに値1のレコードが3つある場合、ハウスIDの1番目のエントリだけが返され、3行は返されません。
SELECT r.*, g.*
FROM house r, pic_gallery g
WHERE r.house_id = 1 AND r.house_id = g.house_id
あなたが(たとえば、単一の列をフェッチ)あなたのギャラリーから1枚の画像を表示したい場合は、単純な副選択は、あなたの場合は
SELECT
r.*
, (SELECT TOP(1) PrimaryImage
FROM pic_gallery g
WHERE r.house_id = 1 AND r.house_id = g.house_id
)
FROM house r
をお手伝いをします、あなたが参加したいように思えますギャラリーテーブルの行データ全体サブテーブルの行を1つだけ選択する場合は、データベースがどの行が正しいかを知るために何らかの方法で並べ替える必要があります。
SELECT R.*
FROM house R
OUTER APPLY (
SELECT TOP 1 G.ID,G.Image,G.Owner,G.HouseID
FROM gallery G
WHERE G.HouseID = R.HouseID
ORDER BY G.CreatedDate
) O
また、パーティションをオーバービューすると便利です。
個人的に私はギャラリー行の1つをプライマリとしてマークし、このような単純な結合を使用します。
SELECT * From house R
LEFT OUTER JOIN gallery G ON R.HouseID = G.HouseID
WHERE G.PrimaryRow = 1
別名で左結合を試してください。
SELECT DISTINCT g.house_id, r.*, g.*
FROM pic_gallery g
LEFT JOIN house r,
ON r.house_id = g.house_id
WHERE r.house_id = 1
ようこそ。あなたの質問は何ですか? –
私には明らかです。 – w0051977
サンプルテーブルのデータと期待される結果を書式付きテキスト(イメージではなく)として追加します。 – jarlh