exp_playa_relationships
CMSの投稿の関係データと次のようなデータ構造を格納する単一のMySQLDBテーブル()を調べるSQLクエリを作成しようとしています。
rel_id | parent_entry_id | parent_field_id | child_entry_id
-----------------------------------------------------------------
55 | 3 | 2 | 1
56 | 3 | 2 | 4
58 | 1 | 2 | 4
59 | 8 | 4 | 2
60 | 8 | 5 | 1
63 | 4 | 2 | 3
64 | 9 | 4 | 6
65 | 9 | 5 | 3
rel_id
は一意ですが、他の列は一意ではありません。
上記のデータから以下を生成したいと思います。
event_data_id | user_id | event_id
--------------------------------------
8 | 1 | 2
9 | 3 | 6
parent_field_id
値自体は最終出力で破棄されますが、行がaまたはをchild_entry_id
意味するかどうかを判断するために必要です。user_id
event_id
parent_entry_id
ですevent_data_id
。
だから平易な英語で私はしたい:
- またはのいずれかの
parent_field_id
値を持つ行をフィルタリングする4
5
- それらの行のうち、同じを共有するすべての行に参加したいと思い
parent_entry_id
ます。 parent_entry_id
asを返しevent_data_id
ます。- 同じ行
child_entry_id
のuser_id
ifがであるとしてを返します。parent_field_id
5
- 同じ行
child_entry_id
のevent_id
ifがであるとしてを返します。parent_field_id
4
私の現在のSQLクエリ(機能していません)はこれです:
SELECT
t1.`parent_entry_id` AS event_data_id,
t1.`child_entry_id` AS user_id,
t1.`child_entry_id` AS event_id
FROM `exp_playa_relationships` AS t1
INNER JOIN `exp_playa_relationships` AS t2
ON t1.`parent_entry_id` = t2.`parent_entry_id`
WHERE t1.`parent_field_id` = 4 OR t1.`parent_field_id` = 5
私が具体的に理解できないのは、parent_entry_id
(SQLは行ごとに2つの新しい行を作成する)で重複を作成しないようにする方法と、値child_entry_id
としてuser_id
または値event_id
に基づいて返す方法parent_field_id
です。
どんなアイデアでも大歓迎です。