[英]SQL Selecting one record from two tables, then update it
我的数据库中有两个表,用户和员工。 我希望不言自明。 两个表共有的属性是:
在我的 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:如何在单个查询中在 Users 或 Staff 表中找到用户?
问题 2:然后如何在单个查询中更新这些表之一中单个条目的属性?
我正在研究的事情,使用 EXISTS,但在 Sequel Pro 中尝试代码时出现错误: 来自两个表之一的 SQL 数据
假设 'Reference' 列将在两个表中具有唯一值,您可以使用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 = ?;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.