作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 activities 的表,看起来像这样
还有 3 个数组,每个数组以一个表命名,包含 ID:
$clubs[1,2,3]; $vendors[4,5,6]; $users[7,8,9];
如何在数组中选择属于对应俱乐部、厂商、用户的事件?我只知道非常简单的 SQL,但我确信有办法做到这一点。
如果可能的话,我希望在 1 个 select 语句中做到这一点。否则我知道如何在 3 中完成“where in”。
回答:
以下是我如何在 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() - 将数组转换为字符串的回答。
最佳答案
好吧,如果我答对了你的问题,那么查找与保存在数组中的俱乐部 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
希望对您有所帮助!
关于php - SQL:根据related_id和related_table进行选择。 ID 存储在以表命名的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877532/
我正在尝试将 .extra() 函数与 .related_table() 一起使用: foo_objects = Foo.objects.all() result = foo.extra(select
我是一名优秀的程序员,十分优秀!