我的数据库中有两个表,即用户和员工。我希望自我解释。两个表共有的属性是:
在我的user.php文件中,有很多功能用于更新用户帐户的属性。目前它的效率非常低,因为我必须拆分查询以检查用户是否在Users表或Staff表中,然后执行相同的操作以将任何更改推送回我的数据库。
我喜欢单个查询来完成从两个表中查找记录的艰苦工作。
//Check the USERS table first
$LocateAccount__UsersTable_Query = $CTDatabase->prepare("SELECT * FROM Staff WHERE Reference='$Account_Reference'");
$LocateAccount__UsersTable_Query-> execute();
$LocateAccount__UsersTable_Count = $LocateAccount__UsersTable_Query->rowCount();
if ($LocateAccount__UsersTable_Count > 0){
//Fetch the user's record
// echo "USER IS USER";
$Located_Account = $LocateAccount__UsersTable_Query->fetch();
} else {
//Account not found in USERS table, so check STAFF table
$LocateAccount__StaffTable_Query = $CTDatabase->prepare("SELECT * FROM Staff WHERE Reference='$Account_Reference'");
$LocateAccount__StaffTable_Query-> execute();
$LocateAccount__StaffTable_Count = $LocateAccount__StaffTable_Query->rowCount();
if ($LocateAccount__StaffTable_Count > 0){
//Account has been found in the USERS table
$Located_Account = $LocateAccount__StaffTable_Query->fetch();
//Fetch the STAFF user's record
// echo "USER IS STAFF";
} else {
echo 'An error message goes here..';
}
问题1:如何在一个查询中的“用户”或“员工”表中找到用户?
问题2:如何在单个查询中对其中一个表中的单个条目更新属性?
我正在研究的东西,使用EXISTS,但在Sequel Pro中尝试代码时遇到错误: SQL Data from One of Two Tables
答案 0 :(得分:1)
假设'参考'列将在两个表中具有唯一值,您可以使用UNION
运算符搜索具有相同值的两个表,例如:
select Reference, first_name, last_name from users where Reference = ?
UNION
select Reference, first_name, last_name from staff where Reference = ?
您还可以使用join
更新一个查询中的两个表,例如:
UPDATE users,staff SET table1.col=a,table2.col2=b
WHERE users.reference = ?;