2

次のようなアクティビティというテーブルがあります


ID | related_id | 関連テーブル | ...

そして、それぞれがテーブルにちなんで名付けられ、ID を含む 3 つの配列:

$clubs[1,2,3]; $vendors[4,5,6]; $users[7,8,9];

アレイ内の対応するクラブ、ベンダー、およびユーザーに属するアクティビティを選択するにはどうすればよいですか? 私は非常に単純な SQL しか知りませんが、これを行う方法があると確信しています。

可能であれば、1 つの select ステートメントでこれを実行しようとしています。それ以外の場合は、「どこで」3でそれを行う方法を知っています.

答え:

1回の選択ですべてのアクティビティを取得する方法は次のとおりです。

'SELECT * from activities where (related_table = \'clubs\' and related_id in ('.$clubs_string.')) or  (related_table = \'vendors\' and related_id in ('.$vendors_string.')) or (related_table = \'users\' and related_id in ('.$users_string.'));';

配列を文字列に implode() することに関する Morgan Wilde の回答を参照してください。

4

1 に答える 1

1

質問が正しければ、配列に保存されているクラブ ID に関連するすべてのアクティビティを見つける方法は...

$clubs_string = implode(",", $clubs); // convert your array into a comma separated string

並べ替えたら、次のようなクエリを送信します

SELECT `id` FROM `activities` WHERE `related_id` IN ({$clubs_string}) AND `related_table` = 'club_table_name'

他のすべてのテーブル タイプに対して同じロジックを繰り返すことができます。

ここでは、いくつかのきれいな MySQL WHERE IN の例を見つけることができます - http://www.tutorialspoint.com/mysql/mysql-in-clause.htm

それが役立つことを願っています!

于 2012-10-13T22:40:44.900 に答える