0

クエリの「合計結果」を取得しようとしていますが、頭を悩ませ、エラーが発生し続けるのに苦労しています。これは私のテーブルのセットアップです:

exp_channel_data table
entry_id   field_id_17
36         1
43         6
42         5
65         7

exp_freeform_form_entries_2 table
form_field_8    user_id
40              6
35              1
38              1


exp_matrix_data table
entry_id   col_id_20
36         [35] [test-course] Test Course
36         [38] [test-course-2] Test Course 2
43         [40] [health-safety] Health & Safety
43         [35] [test-course] Test Course
43         [38] [test-course-2] Test Course 2
65         [40] [health-safety] Health & Safety

(col_id_20)内部に「コース」exp_matrix_dataが「完了したコース」として存在するかどうかを確認するクエリを実行する必要があります(form_field_8)( exp_free_form_entries_2[] の間の数字にリンクされています)。次に、「未完了コース」の「カウント」を出力する必要があります

複数の「会員」がコースを受講できるため、ログインしたユーザーから「コース」を確認する必要があります。

exp_channel_data各ユーザーは、「コース」がユーザーに割り当てられる「ユーザー プロファイル ID」(entry_id)と「固有のメンバー ID」の 2 つの異なる ID として保存されます(field_id_17)

動的に入力する「ユーザー プロファイル ID」は、通常は次のようにします。

WHERE entry_id = '{logged_in_id}'

したがって、クエリを実行して、「ユーザー プロファイル ID」を持つ(field_id_17)値の「一意のメンバー ID」が完了した「未完了のコース」を持っているかどうかを確認すると、コースのみが完了したため、「未完了のコース」という結果になります。64321

43 [40] [health-safety] Health & Safety

関係

entry_id [exp_channel_data] => entry_id [exp_matrix_data]

field_id_17 [exp_matrix_data] => user_id [exp_freeform_form_entries_2]

col_id_20 [exp_matrix_data] => form_field_8 [exp_freeform_form_entries_2]

4

2 に答える 2

0

あなたが与えた仕様に基づいて、このクエリがあなたが望むものに近づくことを期待しています:

select d.* 
from exp_channel_data ch 
inner join exp_freeform_form_entries_2 ff 
  on ch.field_id_17 = ff.user_id
inner join exp_matrix_data d 
  on d.col_id_20 like Concat('[', ff.form_field_8, ']%')
where ch.entry_id = 36

sqlfiddleを確認してください

于 2013-06-14T11:10:06.897 に答える
0

これは機能します。

select count(*) from exp_matrix_data where entry_id = '{logged_in_id}' and
 CONVERT(SUBSTRING_INDEX(SUBSTRING(col_id_20, 2),']',1),UNSIGNED INTEGER) NOT IN (SELECT     form_field_8 FROM exp_freeform_form_entries_2 where user_id in (select distinct(ecd.field_id_17) from exp_channel_data ecd where ecd.entry_id = '{logged_in_id}'))
于 2013-06-14T11:19:48.347 に答える