0

アイテムの ID をモデルに渡しています。このアイテム ID をクエリで使用して、area_id を検索し、そこから同じ area_id を持つ他のアイテムを返したいと考えています。サブクエリを見てみましたが、それは私には正しくないようでした。これが私の構造です。

アイテム:

ID -- Title -- Area_id(FK) -- Description -- Date_added

領域:

ID -- Place -- Date_Added

助けてくれてありがとう

ジョニー

4

2 に答える 2

1

まず、あなたのアイテムを選択します。

SELECT Area_id FROM Item i WHERE ...

エリアIDを取得する

次に、特定の領域のすべてのアイテムを取得する必要があります。

SELECT * From Item WHERE Area_id IN (...)

2 つのクエリをまとめます。

SELECT * From Item WHERE Area_id IN (SELECT Area_id FROM Item i WHERE ...)

これで完了です。

サブクエリはパフォーマンスに適していないことに注意してください。そのため、データベースが大きくなるにつれてこのクエリをベンチマークして監視し、パフォーマンスの問題が発生したときに最適化することをお勧めします。

于 2013-06-13T19:18:52.870 に答える
0

これを試して:

SELECT i2.*
FROM item i1, item i2
WHERE i1.id = :input_item_id
AND i1.area_id = i2.area_id

これは「自己結合」と呼ばれるもので、サブクエリを使用したソリューションよりもはるかに効率的です。

于 2013-06-14T16:37:32.077 に答える