0

クエリ #1:

SELECT

destination_content.content,
destination_content.state

FROM destination_content

私に与えます

State   Content
AZ      Lorem
AZ      Ipsum
AZ      Dolor
NC      Sit
NY      Blabla

クエリ #2:

SELECT

properties.state,
properties.name

FROM properties

WHERE properties.active = 1

私に与えます

State   Content

AZ      Ritz Carlton
AZ      Hotel Malala
NY      Gilt NY

クエリ #1 をクエリ #2 に結合して、次のようにします。

クエリ #1 の結果を取得しますが、結果が次のようにフィルター処理されます。

NC   Sit

表示されません。

最終結果は次のようになります。

State   Content

AZ      Lorem
AZ      Ipsum
AZ      Dolor
NY      Blabla

ノースカロライナ州にはアクティブなプロパティがないため、表示されません。だから私はアクティブなプロパティの状態でフィルタリングしたいと思います。

これらのクエリを組み合わせる最も簡潔な方法は何ですか?

編集: 私の脳が ATM を動かしていないのかもしれませんINNER JOIN properties ON ( destination_content.state = properties.state )が、試してみましたが、必要以上の行の結果が得られます。元々コンテンツピースが230個あるので230個戻ってきますが、その後は1000個くらいになります。私は何を忘れましたか?

4

1 に答える 1

1

テーブルを結合する必要があります。

SELECT dc.content, dc.state
FROM destination_content dc
INNER JOIN properties p ON  ( dc.state = p.state AND dc.content = p.content )
WHERE p.active = 1

各テーブルに主キー (ID) があれば、テーブルを結合する方がはるかに簡単です。

于 2013-07-31T21:05:15.490 に答える