0

基本的に、フィルターの値(ドロップダウンボックス、スライダー、タグ)に応じて、いくつかの異なるテーブルから大量のデータを取得して表示する必要があります。

現時点での私の質問は次のとおりです。

$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-タイムスタンプ

したがって、基本的に、このテーブルをユーザーの情報とリンクして、必要なものをすべて取得する必要があります。これが特に明確でない場合は申し訳ありません。私はまだそれを自分で理解しようとしています。そうでない場合はお知らせください。

4

1 に答える 1

0

私の推測では、ORANDの問題が原因でクエリが機能していません。括弧を使用します。

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 .= ')';
        }   
于 2012-06-22T01:03:47.907 に答える