2010-10-08 4 views
0

У меня есть 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.

Как присоединиться к этим таблицам? ЛЕВЫЙ или ВНУТРЕННИЙ ???

Заранее спасибо.

ответ

0

Вы должны использовать соединение outer.

+0

Вы имеете в виду, что мне нужно заменить JOIN OUTER JOIN? – shin

+0

@shin, да, это то, что я имею в виду –

+0

'LEFT JOIN' также должен это сделать. – Narf

Смежные вопросы