MySQL外键..困惑

时间:2014-02-11 10:50:34

标签: php mysql foreign-keys

我想了解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,不确定哪个是最好的?)

谢谢!

2 个答案:

答案 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/