【发布时间】:2016-11-19 15:30:12
【问题描述】:
我有一个 MySQL 数据库,其中包含三个表,其中包含有关用户上传照片的信息。我有一个 PHP 页面,显示数据库中的所有照片 (tbl_uploads) 以及上传照片的人 (tbl_users)。为了显示照片和上传照片的人,我加入了 MySQL 查询。
SELECT *
FROM tbl_uploads, tbl_users
WHERE tbl_uploads.user_id = tbl_users.user_id
ORDER BY date DESC
我现在想将第三个表 tbl_collab 加入到 MySQL 查询中,该查询允许我显示与照片协作的所有用户(一个表单允许他们将 $file 和他们的 $user_id 发布到 @ 987654328@)。我想我需要从tbl_uploads.file 和tbl_collab.user_id 添加一个联接,但我不确定如何。
tbl_users
|//**user_id**//|int(11)|No|
|user_name|varchar(25)|No|
|user_email|varchar(60)|No|
|user_password|varchar(255)|No|
|joining_date|datetime|No|
tbl_uploads
|//**id**//|int(10)|No|
|file|varchar(100)|No|
|type|varchar(30)|No|
|size|int(11)|No|
|user_id|int(11)|No|
|user_name|varchar(25)|No|
tbl_collab
|//**id**//|int(11)|No|
|user_name|varchar(100)|No|
|user_id|int(11)|No|
|file|varchar(255)|No|
我一直在尝试您的各种建议,但我无法真正让它们像我希望的那样发挥作用,所以我提出了一个 mysql fiddle 可能对我有所帮助。
问题是,当我遍历查询在 PHP 中抛出的行时,我只得到与 tbl_uploads.file and tbl.collab.file 连接的行,或者我得到多行重复。
【问题讨论】:
-
使用显式连接语法 (join / on ) 而不是表名在 from 子句中用逗号分隔。在工作面试/代码审查中看起来不会那么热