私はおそらくタイトルに非常によく、このことを説明していないが、私は2つのテーブルを持っています。ここでは、単純なバージョンがあります。
channel_data
entry_id channel_id first_name last_name model other_fields
1 4 John Smith
2 4 Jane Doe
3 4 Bill Evans
4 15 235
5 15 765
6 15 543
7 15 723
8 15 354
9 15 976
10 1 xxx
11 2 yyy
12 3 123
channel_titles
entry_id author_id channel_id
1 101 4
2 102 4
3 103 4
4 101 15
5 101 15
6 101 15
7 102 15
8 102 15
9 103 15
10 101 1
11 102 2
12 103 3
私は残念ながら、データを再モデル化することはできないのです。
私はchannel_titlesから同じAUTHOR_IDを持ちFIRST_NAMEとLAST_NAME channel_dataからCHANNEL_ID 15とし、それらの横にすべての行をリストする必要があります。
私は返すようにしたいことはこれです:
Model First Name Last Name
---------------------------------
235 John Smith
765 John Smith
543 John Smith
723 Jane Doe
354 Jane Doe
976 Bill Evans
モデルは一つのテーブルにあったと名前が別にあった場合、これははるかに簡単になりますが、私は、彼らが同じテーブルにある場合、このについては移動するかどうかはわかりません。
========================================
明確にするために編集されました。
私はchannel_dataからCHANNEL_ID 15と各モデルを取得する必要があります
各モデルのために私はAUTHOR_IDを見つけるためにchannel_titlesにしたentry_idをルックアップする必要があります
私はそのAUTHOR_IDで行を見つける必要がありAND(CHANNEL_ID 4と、各行が一意AUTHOR_IDを持っている)チャネルのタイトルで4 CHANNEL_ID。
私はchannel_dataに、この行バックのたentry_idを取り、モデルと行くためにFIRST_NAMEとLAST_NAMEを取得する必要があります。
私は、データが十分に構造化されていないことを十分認識していますが、それは私が仕事に持っているものです。私は、データを改造することは、この時点ではオプションではありません、はるかに大きなシステムでは、非常に小さなタスクを達成しようとしています。
私は、サブクエリが、私が探しています何のかもしれないと思うが、これは通常、すべてで私の地域ではありません。
[OK]を、それを畳み込みます。しかし、あなたの説明に基づいて、このクエリは、あなたが望む結果を与える必要があります。説明は、あなたの質問に説明してきた論理に従ってください。WHERE
JOIN
SELECT cd1.model, cd2.first_name, cd2.last_name
FROM channel_data cd1
JOIN channel_titles ct1 ON ct1.entry_id = cd1.entry_id
JOIN channel_titles ct2 ON ct2.channel_id = 4 AND ct2.author_id = ct1.author_id
JOIN channel_data cd2 ON cd2.entry_id = ct2.entry_id
WHERE cd1.channel_id = 15
ORDER BY cd1.entry_id
出力:
model first_name last_name
235 John Smith
765 John Smith
543 John Smith
723 Jane Doe
354 Jane Doe
976 Bill Evans