0

それは私の次の状況です:

表:選択

selection_id | group_id | selection_group_id |  
------------------------------------------------
     1            1              1

表:セレクター

selector_id | selection_id | name | index
------------------------------------------
     1             1         Step1   0 
     2             1         Step2   1 
     3             1         Step3   2

私の質問:選択ユニットを構成する結合情報「Step1、Step2、Step3」を使用して、セレクターの一意の「selection_id」を見つけるにはどうすればよいですか?

私はそれをより正確に説明しようとしています。同じ「selection_id」に接続されている3つのセレクターから一意の「selection_id」を取得するルーチンが必要です。私の情報は、セレクターの「名前」と「インデックス」です。'セレクター'の名前は頻繁に発生する可能性がありますが、セレクターの連続するインデックスは一意です。– </ p>

4

3 に答える 3

0

私はあなたが使いたいと思う-あなたのテーブルGROUP_CONCATにさえ必要かどうかわからない:JOIN

SELECT selection_id, GROUP_CONCAT(name)
FROM selectors

これがSQL Fiddleです。

そして、一意の selection_id を見つけるには:

SELECT DISTINCT Selection_ID
FROM (
  SELECT selection_id, GROUP_CONCAT(name) gc
  FROM selectors
  ) t
WHERE gc = 'Step1,Step2,Step3'

http://sqlfiddle.com/#!2/4609f/13

あなたの質問を誤解した場合はお知らせください。

幸運を。

于 2013-02-05T01:28:10.893 に答える
0

このためには、having句による集計が必要です。例えば:

select selector_id
from selectors s
group by selector_id
having max(case when name = 'Step1' then 1 else 0 end) = 1 and
       max(case when name = 'Step2' then 1 else 0 end) = 1 and
       max(case when name = 'Step3' then 1 else 0 end) = 1 and
       max(case when name in ('Step1', 'Step2', 'Step3') then 0 else 1 end) = 0

この方法が最も一般的だと思います。. . having条件付き最大値に基づくさまざまな条件でステートメントを使用します。他にも次のような表現方法があります。

select selector_id
from selectors s
group by selector_id
having count(distinct name) = 3 and
       max(case when name in ('Step1', 'Step2', 'Step3') then 0 else 1 end) = 0

単純に見えますが、一般的な形式ではありません。

于 2013-02-05T01:46:45.083 に答える
0

私は自分のソリューションを設立しました:http://sqlfiddle.com/#!2/fdbba/20/0

SELECT selections.selection_id FROM `prstshp_productsort_groups_selections` selections 
WHERE EXISTS (SELECT * FROM  `prstshp_productsort_groups_selectors` s3
                WHERE s3.name = "Muskelaufbau" AND s3.index = 0 AND s3.selection_id = selections.selection_id)
AND
EXISTS (SELECT * FROM  `prstshp_productsort_groups_selectors` s4
                WHERE s4.name = "Mesomorph" AND s4.index = 1 AND s4.selection_id = selections.selection_id)
AND
EXISTS (SELECT * FROM  `prstshp_productsort_groups_selectors` s5
                WHERE s5.name = "Männlich" AND s5.index = 2 AND s5.selection_id = selections.selection_id)
AND
EXISTS (SELECT * FROM  `prstshp_productsort_groups_selectors` s6
                WHERE s6.name = "25-40" AND s6.index = 3 AND s6.selection_id = selections.selection_id)
于 2013-02-05T14:07:08.990 に答える