2017-02-09 3 views
0

1)私はfk_pathway IDがすべて3つのfk_link IDS(101,51,87)を含有している、クエリを実行します。 )この例では、結果は、経路ID 2と経路ID 3.複数のセル値(行全体)が条件として複雑なクエリですか?

2.だろう、私はIDが昇順ですべての3つのfk_link IDS(101,51,87)を含んfk_pathwayれ、クエリを実行します。この例では結果は3

経路IDだろう、私はfk_link IDの数千人の親fk_pathway IDを取得することができるようにクエリは、fk_link IDの任意の数で可能でなければなりません。

は、MySQLでこれでも可能ですか?そうでない場合は、php互換のデータストレージの他の形式があります。私はそのようなクエリを作成できますか?あなたはすべての3つのfk_link秒、使用を持っているfk_pathwayを取得したい場合は

fk_link | fk_pathway | order 
     101 1   1 
     51 1   2 

     101 2   1 
     87 2   2 
     51 2   3 
     29 2   4   

     11 3   1 
     101 3   2 
     51 3   3 
     87 3   4 
     97 3   5 
+0

そして、あなたは試してみましたか...? – SuperDJ

+0

複数の質問がある場合は、別々に投稿する必要があります。 –

答えて

1

select 
    fk_pathway 
from your_table 
group by 
    fk_pathway 
where fk_link in (101,51,87) 
having count(distinct fk_link) = 3 

あなたはすべて持っているfk_pathway最高を取得したい場合は、データのバージョンを簡素化

3つのfk_link秒、使用:

select 
    fk_pathway 
from your_table 
group by 
    fk_pathway 
where fk_link in (101,51,87) 
having count(distinct fk_link) = 3 
order by fk_pathway desc 
limit 1 
1

最初の部分はGurVによって回答されました。

2番目の部分では、fk_pathwayの場合、101 <の順番が51 <の順番であるかどうかを確認する必要があります。これを行うには、having句に比較条件を追加します。

select fk_pathway 
from your_table 
group by fk_pathway 
having count(distinct case when fk_link in (101,51,87) then fk_link end) = 3 
and max(case when fk_link=101 then order end) < max(case when fk_link=51 then order end) 
and max(case when fk_link=51 then order end) < max(case when fk_link=87 then order end) 
関連する問題