Задать вопрос
Yura_Mart
@Yura_Mart

Вывод запроса, с сравнением 2 таблиц. Если файл, из одной таблицы, совпадает с id файла из второй таблицы, то выводить всё остальное, кроме него?

Есть 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 COUNT(*) as kol FROM admin_files WHERE signature = 1 ";
    $res = mysqli_query($connection, $query);
    $row = mysqli_fetch_assoc($res);
    $kol = $row["kol"];
    $query = "SELECT a.* FROM admin_files a JOIN support_files s ON s.admin_file_id = a.id WHERE a.signature= 1 AND s.support_id='$id'";
$res = mysqli_query($connection, $query);
if(mysqli_num_rows($res) == $kol){
    return;
}else{
    $query = "SELECT a.* FROM admin_files a JOIN support_files s ON s.admin_file_id != a.id WHERE a.signature= 1 AND s.support_id='$id'";
    $res = mysqli_query($connection, $query);
    if(mysqli_num_rows($res) > 0){
        $signature = array();
        while($row = mysqli_fetch_assoc($res)){
            $signature[$row['id']] = $row;
        }
        return $signature;
    }else{
        $query = "SELECT * FROM admin_files WHERE signature = 1 ORDER BY id DESC ";
        $res = mysqli_query($connection, $query);
        $signature = array();
        while($row = mysqli_fetch_assoc($res)){
            $signature[$row['id']] = $row;
        }
        return $signature;
    }
}
}


Нужно сделать вывод файлов из таблицы admin_files, тех которых нет в таблице support_files иначе выводить все файлы из таблицы admin_files. А если все файлы которые есть в таблице admin_files, есть и в таблице support_files, то ничего не выводить. Выводит нормально до тех пор, пока не совпадают 2 файла из обоих таблиц.Как только 2 файла совпадают, начинает выводить всё что есть в таблице admin_files. Подскажите, пожалуйста, в чём ошибка?
  • Вопрос задан
  • 131 просмотр
Подписаться 3 Простой 4 комментария
Решения вопроса 1
Yura_Mart
@Yura_Mart Автор вопроса
Из подсказки Владислава, вот что получилось, работает как и задумывалось.
function signature($id){
    global $connection;
    $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";
    $res = mysqli_query($connection, $query);
        $signature = array();
        while($row = mysqli_fetch_assoc($res)){
            $signature[$row['id']] = $row;
        }
        return $signature;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы