У меня довольно сложный оператор SQL, и я хочу добавить предложение WHERE, которое выбирает только результаты, ГДЕ столбец hidden
НЕ "1", однако он должен относиться к конкретному пользователю.
т.е. если в таблице 1 hidden
равно 1, а userid
равно 1, я не хочу получать этот результат.Однако, поскольку в этой таблице нет записи для пользователя 2, я хочу, чтобы они ее увидели.
Это то, что мне удалось сделать до сих пор:
$where .= " AND uh.hidden IS NULL ";
Однако, если я войду в системукак пользователь 2, я вижу те же результаты, что и пользователь 1.
Как мне сделать так, чтобы результаты отображались также на основе пользователя?
SQL-запрос:
$pdo = new PDO('mysql:host=localhost;dbname=myDB', 'root', 'root');
$select = 'SELECT tl.id,
tl.name,
tl.locale,
ROUND(AVG(pr.rating),0) AS rating ';
$from = ' FROM theList AS tl ';
$join = ' LEFT JOIN post_rating AS pr ON tl.id = pr.postid ';
$join2 = ' LEFT JOIN user_hidden_list AS uh ON uh.est_id = tl.id ';
$opts = isset($_POST['filterOpts']) ? $_POST['filterOpts'] : [''];
$where = ' WHERE 1 = 1 ';
if (in_array("pub", $opts)) {
$where .= " AND pub = 1";
}
if (in_array("bar", $opts)) {
$where .= " AND bar = 1";
}
$where = ' WHERE uh.hidden IS NULL ';
$group = ' GROUP BY tl.id, tl.name ';
$sql = $select . $from . $join . $join2 . $where . $group;
$statement = $pdo->prepare($sql);
$statement->execute();
$results = $statement->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($results);
echo($json);