繁体   English   中英

SQL从两个表中选择一条记录,然后更新它

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM