gpt4 book ai didi

MYSQL - 连接三个表(连续?)

转载 作者:行者123 更新时间:2023-11-29 11:14:11 26 4
gpt4 key购买 nike

我无法提出执行我要做的事情所需的查询。

我有三个这样的表:

client_files

-----------------------
client_id file_id
-----------------------
1 2
1 3
1 6
2 1
2 2
3 5



files

-------------------------------------------------
ID file_name file_category_id
-------------------------------------------------
1 file1.ext 1
2 file2.ext 3
3 file3.ext 1
4 file4.ext 1
5 file5.ext 2
6 file6.ext 2



file_categories

--------------------------
ID category_name
--------------------------
1 category1
2 category2
3 category3

我正在尝试构建一个查询,该查询将返回特定客户端 ID 的文件名和类别名称。

我期望的结果是(来自 ID 1):

-----------------------------
file_name category_name
-----------------------------
file2.ext category3
file3.ext category1
file6.ext category2

据我了解,我需要将 client_files 表连接到 files 表,然后连接到 file_categories 表。我看过其他示例,这些示例涉及将两个表与第三个表连接在一起,但相信这是一种不同的情况。

这与我想出的结果相当,但结果几乎是随机的,返回的一些文件未链接,有些文件丢失了。

    SELECT
f.file_name,
fc.category_name
FROM
client_files cf,
files f,
file_categories fc
WHERE
cf.client_id = 1 AND f.ID = cf.file_id AND fc.ID = f.file_category_id;

最佳答案

你可以通过两种方式做到这一点,但我认为本质上是相同的。

第一种方式:

SELECT
f.file_name,
fc.category_name
FROM
client_files cf
JOIN files f ON cf.file_id = f.id
JOIN file_categories fc ON fc.id = f.file_category_id

或者,第二种方式:

SELECT
f.file_name,
fc.category_name
FROM
(client_files cf
JOIN files f ON cf.file_id = f.id) data1
JOIN file_categories fc ON fc.id = data1.file_category_id

关于MYSQL - 连接三个表(连续?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40031149/

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