2010-10-08 44 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 2010-10-08 13:29:45

+0

@shin,是的,我的意思是 – 2010-10-08 13:32:00

+0

'LEFT JOIN'也應該這樣做。 – Narf 2010-10-08 14:58:27