Как составить запрос с выводом разницы двух множеств с условием WHERE?

168
10 июня 2018, 11:20

Есть 2 таблицы:

admin_files:

id  |  signature
 1   |        1
 2   |        1
 3   |        1

support_files:

id  |  support_id  |  admin_file_id
 1   |        2           |        1  
 2   |        2           |        2 
 3   |        2           |        3
function signature($id){
global $connection;
$query = "SELECT a.* FROM admin_files a LEFT JOIN support_files s ON s.admin_file_id = a.id WHERE s.admin_file_id IS NULL";
$res = mysqli_query($connection, $query);
    $signature = array();
    while($row = mysqli_fetch_assoc($res)){
        $signature[$row['id']] = $row;
    }
    return $signature;

}

Выводит разницу, но не работает, если добавить условие в

WHERE s.admin_file_id IS NULL AND a.signature= 1 AND s.support_id='$id'";

Условия a.signature= 1 AND s.support_id='$id' нужны обязательно, куда можно их пристроить?

Answer 1
$query = "SELECT a.* FROM admin_files a LEFT JOIN support_files s ON s.admin_file_id = a.id AND s.support_id='$id' WHERE s.admin_file_id IS NULL AND a.signature= 1";

всё, сделал, так работает как надо

Answer 2

Для этого есть оператор MINUS. Операция, обратная UNION.

READ ALSO
Некорректная работа DbSession в Yii2

Некорректная работа DbSession в Yii2

Попытаюсь сформулировать проблему как можно четче

148
Как удалить всю авторизацию в Laravel

Как удалить всю авторизацию в Laravel

Использовал команду php artisan make:auth для авторизации но теперь нужно все изменения удалить, не хочу переустанавливать Laravel, есть ли встроенные...

178
Воспроизвести видео / показать Ip

Воспроизвести видео / показать Ip

Возможно ли при нужном юзерагенте вывести Ip адрес,а в остальных случаях показывать нужное видео

159
Перегрузка операторов ввода и вывода C++ [дубликат]

Перегрузка операторов ввода и вывода C++ [дубликат]

На данный вопрос уже ответили:

218