我有一个系统,所有用户都存储在同一个表中,他们的“角色”决定了他们是什么类型的用户。
客户在商店赚取积分。我正在尝试创建一个PHP页面,客户可以在其中查看他们已经获得积分的商店,因此商店可以登录并查看哪些客户已获得积分。 (希望有意义!)
我有两张桌子
Table1是用户表,包含其中的所有用户信息..即姓名,地址等
Table2存储所有点和uid(客户ID)和SID(商店ID),这两个字段都匹配用户表中的uid。
...的sooo
我认为MySQL需要看起来像这样
Select loyal_tokens.tokens, loyal_tokens.date, users.id, users.email, users.first_name, users.last_name,loyal_tokens.sid,loyal_tokens.uid from users, loyal_tokens
INNER JOIN loyal_tokens, users as StoresName on users.id = loyal_tokens.sid
INNER JOIN loyal_tokens, users as UsersName on users.id = loyal_tokens.uid
这不起作用(显然有非唯一表)。我真的对如何解决它感到茫然!
在SQL结束时,我将放置一个where子句
WHERE users.id=x
用户ID可以是商店或客户,它将显示他们获得的积分并显示商店/客户名称而不是ID。
希望有意义!
由于
迈克尔
答案 0 :(得分:0)
您可以使用left join
,例如:
SELECT lt.*, u1.*, u2.*
FROM loyal_tokens lt LEFT JOIN users u1 ON lt.uid = u1.id
LEFT JOIN users u2 ON lt.sid = u2.id
WHERE lt.sid = ? OR lt.uid = ?
根据u1.*
和u2.*
返回的值,您可以检查它是商店还是客户,并相应地显示这些值。
答案 1 :(得分:0)
使用这样的语法查询特定商店的客户
Select
loyal_tokens.tokens, loyal_tokens.date,
customer.last_name, customer.first_name
from loyal_tokens
left join users as customer on customer.id = loyal_tokens.uid
where loyal_tokens.sid = 1234
您需要一个不同的等效查询来获取客户的商店。您无法对这两个功能使用相同的查询。