私は次の属性と比較してるMySQLで2つのテーブルを持っていることで行方不明:MySQLの>、<、およびグループ
これらのテーブル
tbl_fac : facility_id, chemical_id, criteria
10 , 25 , 50
10 , 26 , 60
10 , 27 , 60
11 , 25 , 30
11 , 27 , 31
etc...
tbl_samp: sample_id, chemical_id, result
5 , 25 , 51
5 , 26 , 61
6 , 25 , 51
6 , 26 , 61
6 , 27 , 500
etc....
はchemical_id(によって結合されている多対多--- 〜ugh)、facility_idには数千のchemical_idがあり、各facility_idには数百のchemical_idがあります。数千のsample_idも存在し、各sample_idにはそれぞれ数百のchemical_idがあります。オールインオールで、tbl_facには約500,000レコード、tbl_sampには1,000,000+レコードがあります。
私は、このデータセットからsample_id年代の三つのグループを抽出しようとしている:
グループ1:任意のsample_id tbl_samp.result> tbl_fac.criteria(すなわち、結果が基準を超えている)
グループ2:任意のsample_idどこtbl_samp.result < tbl_fac.criteria、およびすべてのtbl_fac.chemical_idさんは、そのsample_idのために存在している(つまり、結果が基準未満であり、すべてがそこにある)
グループ3:tbl_samp.result < tbl_fac任意のsample_id。 1つ以上のtbl_fac.chemical_idが欠けている(結果が基準未満ですが、何かが欠落しています)
ここに質問があります: 3つのグループをすべて1つのクエリで効率的に取得するにはどうすればよいですか?私が試した
:
select *
from tbl_fac
left join tbl_samp
on tbl_fac.chemical_id = tbl_samp.chemical_id
しかし、データセット全体(ではない個々のサンプル)のために不足している、この唯一の利回り値。私はtbl_facとtbl_sampに参加するために3番目のテーブルを使用してハッキーなクエリの作業をしていますが、それはとても醜いです。私は実際にそれを投稿するために恥ずかしいです。...
いつものように、 1!
乾杯、
ジョシュ
EDIT:理想的には、私はsample_idを希望し、グループが返される - サンプルIDごとに1つのグループで(データの私の知識は、彼らが常に落ちることを示しています上記の3つのカテゴリのいずれかに)。
あなたは返さ何をしたいですか? 'sample_id'と何らかの' group_it_belongs_to'列のテーブル? –
まあまあです。あなたのコメントを反映するように更新しました。ありがとう! – Josh