Как удалить записи mysql из 2 таблиц, но если записи во 2-й таблице не удаляются из 1-й таблицы?

Это работает, когда у задания есть файлы. Он удаляет записи файлов из таблицы файлов и записи заданий из таблицы заданий, однако, если у задания нет файлов, ничего не происходит. Я хочу, чтобы он по-прежнему удалял запись задания из таблицы заданий, если у задания нет связанных с ним файлов.

DELETE jobs, files FROM jobs INNER JOIN files WHERE jobs.id = $id AND files.jobid = jobs.id

Я пробовал следующее, но это не сработало:

DELETE jobs, files FROM jobs INNER JOIN files WHERE jobs.id = $id OR files.jobid = jobs.id

Также пробовал это, но это не сработало:

DELETE jobs, files FROM jobs INNER JOIN files on jobs.id = files.jobid WHERE jobs.id = $id

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

вот что получилось. он основан на ответе, отмеченном как правильный ниже, но немного отличается.

DELETE jobs, files FROM jobs LEFT JOIN files ON files.jobid = jobs.id WHERE jobs.id = $id

ему не понравился этот короткий код или что-то в этом роде (когда люди говорят файлы f или задания j, позже они говорят f.jobid или j.id). и, возможно, ему не понравились звезды/звездочки при первом объявлении таблиц (не уверен).


person leoarce    schedule 11.02.2014    source источник


Ответы (1)


Просто использование LEFT JOIN решит вашу проблему:

DELETE j.*, f.*
FROM jobs j
LEFT JOIN files f
    ON f.jobid = j.id
WHERE j.id = $id
person hjpotter92    schedule 11.02.2014
comment
@leoarce Ну, таблица существует? Вы указали те же имена таблиц в своем вопросе. - person hjpotter92; 12.02.2014