我有两个表如下:
供应商:
供应商_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/