我有omc_projects,omc_logs,omc_specs和omc_files。
所有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。
我应该如何连接这些表?左还是内??
提前谢谢。
发布于 2010-10-08 21:14:42
您应该使用outer join。
https://stackoverflow.com/questions/3890806
复制相似问题