У меня есть omc_projects, omc_logs, omc_specs и omc_files.Как присоединиться к четырем таблицам с MySQL
Все таблицы omc_logs, omc_specs и omc_files имеют поле под названием project_id.
CREATE TABLE IF NOT EXISTS `omc_projects` (
`id` int(10) NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`id`)
) ... ;
CREATE TABLE IF NOT EXISTS `omc_files` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`project_id` int(11) NOT NULL,
...
PRIMARY KEY (`id`)
) ... ;
CREATE TABLE IF NOT EXISTS `omc_logs` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`project_id` int(10) NOT NULL,
...
PRIMARY KEY (`id`)
) ... ;
CREATE TABLE IF NOT EXISTS `omc_specs` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`project_id` int(10) NOT NULL,
...
...
PRIMARY KEY (`id`)
) ... ;
Теперь я делаю функцию удаления в модели, чтобы проверить, есть ли какие-либо файлы, данные или журналы, как это.
function checkproject($id){
// if there are any data in one of table, returns TRUE
$query = 'SELECT omc_projects.id, omc_specs.id, omc_logs.id, omc_files.id
FROM omc_projects
JOIN omc_specs
ON omc_specs.project_id = omc_projects.id
JOIN omc_logs
ON omc_logs.project_id = omc_projects.id
JOIN omc_files
ON omc_files.project_id = omc_projects.id
WHERE omc_projects.id = $id'
$query = $this->db->get();
if ($query->num_rows() > 0){
return TRUE;
}else{
return FALSE;
}
$query->free_result();
}
Если есть еще один данные в любой таблице, я хочу вернуть TRUE, и если есть никто не возвращает FALSE.
Однако это работает, если есть данные во всех таблицах. Если он есть в спецификациях или в других таблицах, он не возвращает TRUE.
Как присоединиться к этим таблицам? ЛЕВЫЙ или ВНУТРЕННИЙ ???
Заранее спасибо.
Вы имеете в виду, что мне нужно заменить JOIN OUTER JOIN? – shin
@shin, да, это то, что я имею в виду –
'LEFT JOIN' также должен это сделать. – Narf