mysql - 在检查两个不同的表中的用户名时仅返回一个用户

标签 mysql

我有两个表如下:

供应商: 供应商_id、供应商_密码 123456 zzzz 647890 yyyyy

客户: 客户 ID、客户密码 00000 zzzz 11111 年

我已将两个表的 id 设置为唯一键和主键。 运行以下查询后:

$用户名 = 123456,$密码 = zzzzzz。

SELECT * FROM 供应商、客户 WHERE (suppliers.supplier_id = '$username' AND sellers.supplier_pw = '$password') OR (customers.customer_id = '$username' ANDcustomers.customer_pw = '$password '

它返回 id = 123456 的供应商的结果以及密码 = zzzzzz 的客户的结果。 但我想让它只返回与 id 和密码匹配的那个。 我应该在查询中更改哪里?

更新表结构:

供应商:

supplier_id(PK,唯一)、supplier_pw、supplier_lastname、supplier_firstname、supplier_email(唯一)、supplier_phone、company_name(唯一)、company_address、company_city、company_state、company_zip

客户:

customer_id(PK,唯一)、customer_pw、customer_lastname、customer_firstname、customer_email(唯一)、customer_phone、customer_address、customer_city、customer_state、customer_zip

最佳答案

如果您想选择与用户名和密码输入匹配的数据,并且它们需要来自两个表(如果发生匹配),那么您可以使用union all as

select 
supplier_id as id,
supplier_lastname as lastname,
supplier_firstname as firstname,
supplier_email as email ,
supplier_phone as phone,
'Supplier' as entity_name
from suppliers 
where suppliers.supplier_id = '$username' AND suppliers.supplier_pw = '$password'
union all
select
customer_id as id,
customer_lastname as lastname,
customer_firstname as firstname,
customer_email as email,
customer_phone as phone,
'Customer' as entity_name 
customers.customer_id = '$username' AND customers.customer_pw = '$password'

请注意,我从两个表中选择了几列,并添加了别名,如果需要,您可以添加更多列,但请确保两个查询具有相同数量的选择,然后添加一个名为 entity_name 的额外列告诉您该行来自哪个表,以防您在两个表中都有匹配的数据。

关于mysql - 在检查两个不同的表中的用户名时仅返回一个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26780490/

相关文章:

mysql - 在 React/Express 中插入对象而不是 MySQL 中的字符串

mysql - 根据第三个表中的值对两个表中的数据进行排序

PHP:MY​​SQL 到文本框

mysql - MySQL的空记录,如何查找?

mysql - 使用安装在主机上的 mysql 对 wordpress 进行 dockering

mysql - 在查询中创建临时变量

mysql - 数据库查询中的锁

c# - 无法填充 DataSet 但 MySqlCommand 工作正常

php - 调用数组的成员函数 fetch_array()

mysql - Moodle本地文件夹数据库更新