2012-02-01 17 views
0

今日はノンストップの番組制作に少し勇気付けられましたが、それは簡単ですが、私の脳はこの時点ではそこにはありません。カテゴリに関連する商品を検索する方法は?

私はレコードのテーブルを持っています。各レコードは1つ以上のカテゴリに属します。カテゴリとレコードは、record_idとcategory_idの列を持つ中間テーブルによって結合されます。

私がしたいのは、現在のレコードと同じカテゴリに属する​​レコードを照会することです。それについてどうすればいいのですか?

ありがとうございます!

答えて

1

アソシエーションテーブルを 'record_category'とします。そして、あなたは既に、リスト内の「現在のレコード」のカテゴリIDを持っています。

select r.* from records r join record_category rc on rc.record_id=r.record_id where rc.category_id in(?category_ids) 

現在のレコードIDがすべての場合は、そのIDです。次に、より完全なクエリになります。

select r.* from record r join record_category rc on rc.record_id=r.record_id where rc.category_id in(select rc.category_id from record_category rc where record_id=?) group by r.record_id 

置き換えますか? idの実際の値と比較するか、またはプリペアドステートメントで使用します(言語によって異なります)。

+0

(?category_ids)は...それはmysql構成ですか? category_idsはここでは変数か列名ですか? – GeekedOut

+0

category_idsは、クエリに渡すカテゴリIDのリストです。完全に構成された問合せのインスタンスは、次のようになります。select r。* from records r rcrecord_id = r.record_idのrc.category_idの(1,2,4,6) – ggreiner

関連する問題