gpt4 book ai didi

php - 如何在MYSQL 中连接所有三个表?

转载 作者:行者123 更新时间:2023-11-29 01:27:04 24 4
gpt4 key购买 nike

我有一个 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_idtbl_collab)。我想我需要使用 tbl_collab.user_id 添加来自 tbl_uploads.file 的连接,但我不确定如何添加。

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 和 tbl.collab.file 连接的行,或者我得到多行复制自己。

最佳答案

我建议优先使用 ANSI SQL 语法进行连接(而不是在“from”子句中提及多个表),因为一旦查询变得复杂,我发现 ANSI 语法更容易理解。使用该语法,连接多个表没什么大不了的。例如,

SELECT uploads.<column>, users.<column>, collabs.<column> 
FROM tbl_uploads uploads
JOIN tbl_users users ON users.user_id=uploads.user_id
JOIN tbl_collabs collabs ON collabs.file=uploads.file
ORDER BY uploads.date DESC

(请注意,将上面的 <column> 替换为您要从相应表中选择的列的名称,必要时使用 AS 语法提供唯一名称。)

考虑到如果您预计数据库会变大,您可能希望在连接条件中的字段上创建索引以提高性能。您可能还想在连接时使用左连接,例如 tbl_collabs如果上传可能没有合作者,否则如果 tbl_collabs 中没有匹配的行,查询将不返回任何数据。 .

关于php - 如何在MYSQL 中连接所有三个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38412746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com