基本上,我需要从几个不同的表中获取一堆数据并显示它,具体取决于过滤器的值(下拉框,滑块和标签)
这是我目前的查询:
$query_string = 'SELECT DISTINCT * FROM users
JOIN user_subjects ON users.id = user_subjects.user_id
JOIN user_notifications ON users.id = user_notifications.user_id
';
if ($subjects != 'false') {
if (count($subjects) > 1)
{
// If there is more than 1 subject tag
$query_string .= ' WHERE user_subjects.subject_id = '.$subjects[0];
foreach ($subjects as $subject) {
$query_string .= ' OR user_subjects.subject_id = '.$subject;
}
}
else if (count($subjects) == 1)
{
// If there's only 1 subject tag, select it only
$query_string .= " WHERE user_subjects.subject_id = ".$subjects[0];
}
}
if ($subscription != 'All Subscriptions')
{
$query_string .= ' AND users.user_plan = "'.$subscription.'"';
}
因此,查询的这一部分大部分工作,但我还需要根据过滤器从另一个表中选择数据。
额外表(名为"user_notifications")中的数据如下所示:- user_id-行动- entity_id- exp_rewarded-时间戳
所以基本上我需要将此表与用户的信息链接起来,并获得我需要的一切。抱歉,如果这不是特别清楚。我还在努力自己弄清楚。如果不是,请告诉我。
我的猜测是,由于OR和问题,查询不起作用。使用括号。
if (count($subjects) > 1)
{
// If there is more than 1 subject tag
$query_string .= ' WHERE (user_subjects.subject_id = '.$subjects[0];
foreach ($subjects as $subject) {
$query_string .= ' OR user_subjects.subject_id = '.$subject;
}
$query_string .= ')';
}