Php SQL:根据相关\u id和相关\u表选择。ID存储在为表命名的数组中

Php SQL:根据相关\u id和相关\u表选择。ID存储在为表命名的数组中,php,mysql,sql,select,Php,Mysql,Sql,Select,我有一张叫做“活动”的桌子,看起来像这样 id |相关| id |相关|表|。。。 和3个数组,每个数组以表命名,包含ID: $clubs[1,2,3]; $vendors[4,5,6]; $users[7,8,9]; 如何在阵列中选择属于相应俱乐部、供应商和用户的活动?我只知道非常简单的SQL,但我相信有一种方法可以做到这一点 如果可能的话,我希望在select语句中实现这一点。否则我知道怎么做,在哪里做它在3 答复: 以下是我如何在1 select中获得所有活动的过程: 'SELECT *

我有一张叫做“活动”的桌子,看起来像这样

id |相关| id |相关|表|。。。 和3个数组,每个数组以表命名,包含ID:

$clubs[1,2,3]; $vendors[4,5,6]; $users[7,8,9];
如何在阵列中选择属于相应俱乐部、供应商和用户的活动?我只知道非常简单的SQL,但我相信有一种方法可以做到这一点

如果可能的话,我希望在select语句中实现这一点。否则我知道怎么做,在哪里做它在3

答复:

以下是我如何在1 select中获得所有活动的过程:

'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关于将数组内爆为字符串的回答。

如果我没有弄错你的问题,那么查找保存在数组中的与俱乐部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,在示例中-


希望有帮助

那么,你认为一次选择不可能吗?谢谢你的链接。这将构成一个单一的选择。除非您想将数组转换为字符串作为select:?或者我错过了什么?这是一个单一的选择,但它只得到了“俱乐部”的活动。我想在一次选择中获得所有三个表中的活动。它可以通过或来完成。我将更新我的问题,说明我是如何完成的。哦,当然,正如我提到的,你可以添加任何其他WHERE子句。跟踪您的结果(如果有):不错,不过我会使用双引号和{}在查询字符串中包含变量。像这样,从活动中选择*,其中相关_表='clubs'和{$clubs_string}中的相关_id,或相关_表='vendors'和{$vendors_string}中的相关_id,或相关_表='users'和{$users_string}中的相关_id;我曾经用这种方式编写sql,但我的老板用这种方式编写,并让我也这样做。除了更易于阅读和编写之外,还有什么好处吗?在本例中不是这样,只是代码卫生。单引号迫使您通过中断带有“..”的声明来转义变量,其中双引号解释了更多未转义符号的php含义,如美元符号,因此您可以使用一些美元变量。易用性。