Как отобразить значения, исключенные предложением Where? - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь выяснить, как отобразить все те значения, которые исключены из этого предложения WHERE, а не те, которые выбраны:

    $pdo = $service->pdo;
    $sql = "SELECT a.id, a.name, a.surname, a.job, b.start_date, b.end_date
    FROM table1 a
    INNER JOIN table2 b on b.id = a.id
    WHERE a.job = '{$job}'
    AND
    STR_TO_DATE(b.`start_date`, '%d-%m-%Y') = '{$date}'
    GROUP BY a.id ";
    return $pdo->query($sql)->fetchAll(PDO::FETCH_OBJ);

То, что этот запрос возвращает значения, которые соответствуют "название работы "сначала, а затем значения, которые существуют на эту дату в таблице 2. Я пытаюсь показать все остальные значения, основанные на" названии работы ", за исключением тех значений, которые существуют на эту конкретную дату.По сути, мне нужно выяснить, например, как узнать, кто свободен в определенную дату на основе этого запроса.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете изменить свой запрос и установить обратное выражение where следующим образом: вы получите строки, которые не соответствуют «рабочему заголовку», ИЛИ (это важно) строки, которые не соответствуют датам в таблице 2.

    $pdo = $service->pdo;
    $sql = "SELECT a.id, a.name, a.surname, a.job, b.start_date, b.end_date
    FROM table1 a
    INNER JOIN table2 b on b.id = a.id
    WHERE a.job <> '{$job}'
    OR
    STR_TO_DATE(b.`start_date`, '%d-%m-%Y') <> '{$date}'
    GROUP BY a.id ";
    return $pdo->query($sql)->fetchAll(PDO::FETCH_OBJ);

РЕДАКТИРОВАТЬ

После прочтения ваших комментариев я вижу, что вам не нужны косули, которые перенаправили в ваш запрос, вам нужны строки, соответствующие первомуи не соответствуют второму.Так что вам нужно это так:

    $pdo = $service->pdo;
    $sql = "SELECT a.id, a.name, a.surname, a.job, b.start_date, b.end_date
    FROM table1 a
    INNER JOIN table2 b on b.id = a.id
    WHERE a.job = '{$job}'
    AND
    STR_TO_DATE(b.`start_date`, '%d-%m-%Y') <> '{$date}'
    GROUP BY a.id ";
    return $pdo->query($sql)->fetchAll(PDO::FETCH_OBJ);
...