2

我有一张名为活动的表格,看起来像这样


编号 | 相关ID | 相关表 | ...

还有 3 个数组,每个数组都以一个表命名,包含 ID:

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

如何选择数组中对应的俱乐部、供应商和用户的活动?我只知道非常简单的 SQL,但我确信有办法做到这一点。

如果可能的话,我希望在 1 个选择语句中执行此操作。否则我知道如何在 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.'));';

请参阅 Morgan Wilde 关于 implode() 将数组转换为字符串的答案。

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 回答