我想了解MySQL外键,希望有人可以提供帮助。
我有两个具有以下结构的表格;
报告
+-----------+------+-----------+------------------+
|id|user_id |status|report_type|request_id |
+-----------+------+-----------+------------------+
| |
+-------------------------------------------------+
用户
+-----------+------+-----------+------------------+
|id|username|f_name|l_name |email |
+-----------+------+-----------+------------------+
| |
+-------------------------------------------------+
我在reprots表(fk_uid
)中有一个外键,它将报告表中的user_id
列链接到users表中的id
。
我想在PHP中运行一个MySQL查询,它将为给定用户提取所有报告(通过用户名或user_id,不确定哪个是最好的?)
谢谢!
答案 0 :(得分:1)
可以通过简单的内连接来完成
select
users.username,
users.f_name,
users.l_name ,
reports.status,reports.report_type,
reports.request_id from reports
inner join users on users.id = reports.user_id
如果您要搜索特定用户,请使用where where condition
select
users.username,
users.f_name,
users.l_name ,
reports.status,
reports.report_type,
reports.request_id from reports
inner join users on users.id = reports.user_id
where users.username = 'some user name'
如果你想通过userid那么条件是
where users.id = 'your user id'
答案 1 :(得分:0)
如果您只想获取报告而没有用户信息,那么如果您有user_id,则可以直接查询报告表
假设您在$ userid
中的变量中有userid喜欢
select * from reports where user_id = $userid
如果你想要来自两个表的数据,那么你需要像这样进行连接
针对特定用户的报告:
select r.*, u.* from reports r, users u where r.user_id = $userid
and r.user_id = u.id
所有用户的报告
select r.*, u.* from reports r, users u where r.user_id = u.id
如果您想了解有关加入的更多信息,请访问此链接
http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
http://www.sitepoint.com/understanding-sql-joins-mysql-database/