如何使用 Join 从多个表中删除 select 行 - CodeIgniter
How to Delete select rows from multiple tables using Join - CodeIgniter
我有三个 table,如果其中一个 table 中的给定条件为真,我希望能够从中删除 select 行。我正在使用 codeigniter。
我的 Table 名称是:Register、Profiles 和 Profilesmember。所有 3 table 都有我想加入的“电子邮件”列。一个 table“注册”有一个独特的列“is_email_verfiied”——要么是“是”要么是“否”。如果它是“否”,我想从 table“register”中删除该列以及其他两个 tables“Profiles”和“Profilesmember”之一,具体取决于哪个包含匹配的整体'email' 列。
这是我的模型:
function databaseupdate ()
{
$verified = 'no';
$tables = array('register', 'profiles', 'profilesmember');
$this->db->from ('register');
$this->db->join('profiles', 'profiles.email = register.email');
$this->db->join('profilesmember', 'profilesmember.email = register.email');
$this->db->where('register.is_email_verified', $verified);
$this->db->delete($tables);
}
它会从 table“注册”中删除正确的条目,但不会从第二个 table 个人资料成员或个人资料中删除。
我收到的错误信息是
"Unknown column 'register.is_email_verified' in 'where clause'".
我检查过,“is_email_verified”列拼写正确,当然确实存在于 table 寄存器中(为清楚起见,该列不存在于其他 2 tables).
最后一个 SQL 查询是
"DELETE FROM profiles WHERE register.is_email_verified = 'no' "
所以我改变了我的方法并摆脱了 JOIN 想法 - 这有效:
function databaseupdate ()
{
$verified = 'no';
$tables = array('register', 'profiles', 'profilesmember');
$this->db->select('email');
$this->db->from('register');
$this->db->where('is_email_verified', $verified);
$query = $this->db->get();
$email = $query->row()->email;
$this->db->where('email', $email);
$this->db->delete($tables);
}
我有三个 table,如果其中一个 table 中的给定条件为真,我希望能够从中删除 select 行。我正在使用 codeigniter。
我的 Table 名称是:Register、Profiles 和 Profilesmember。所有 3 table 都有我想加入的“电子邮件”列。一个 table“注册”有一个独特的列“is_email_verfiied”——要么是“是”要么是“否”。如果它是“否”,我想从 table“register”中删除该列以及其他两个 tables“Profiles”和“Profilesmember”之一,具体取决于哪个包含匹配的整体'email' 列。
这是我的模型:
function databaseupdate ()
{
$verified = 'no';
$tables = array('register', 'profiles', 'profilesmember');
$this->db->from ('register');
$this->db->join('profiles', 'profiles.email = register.email');
$this->db->join('profilesmember', 'profilesmember.email = register.email');
$this->db->where('register.is_email_verified', $verified);
$this->db->delete($tables);
}
它会从 table“注册”中删除正确的条目,但不会从第二个 table 个人资料成员或个人资料中删除。
我收到的错误信息是
"Unknown column 'register.is_email_verified' in 'where clause'".
我检查过,“is_email_verified”列拼写正确,当然确实存在于 table 寄存器中(为清楚起见,该列不存在于其他 2 tables).
最后一个 SQL 查询是
"DELETE FROM profiles WHERE register.is_email_verified = 'no' "
所以我改变了我的方法并摆脱了 JOIN 想法 - 这有效:
function databaseupdate ()
{
$verified = 'no';
$tables = array('register', 'profiles', 'profilesmember');
$this->db->select('email');
$this->db->from('register');
$this->db->where('is_email_verified', $verified);
$query = $this->db->get();
$email = $query->row()->email;
$this->db->where('email', $email);
$this->db->delete($tables);
}