我有一个产品表和一个下载表。
Downloads 表有 4 个字段,ID、Name、Category 和 Download
产品表有 3 个特定于下载的字段:下载、订购指南和提交表。这些字段中的每一个都存储下载表中记录的 ID。 Product 表中的这 3 个字段永远不会有相同的下载 ID 值。
我有以下 SQL 语句:
SELECT product_id, product_name, product_download, product_submittal, product_ordering_guide, product_status, tbl_downloads.download_id, tbl_downloads.download_name
FROM tbl_products
LEFT JOIN tbl_downloads ON tbl_products.product_download=tbl_downloads.download_id
LEFT JOIN tbl_downloads ON tbl_products.product_submittal=tbl_downloads.download_id
LEFT JOIN tbl_downloads ON tbl_products.product_order_guide=tbl_downloads.download_id
它会产生以下错误:
#1066 - Not unique table/alias: 'tbl_downloads'
这个错误是有道理的,我知道它会发生,但我不知道如何修复它。我需要添加一个别名,但不确定在哪里。
如果我删除最后两个 JOIN 语句,一切都会按预期进行。
谢谢
最佳答案
如果多次连接同一个表,则需要使用唯一的别名:
SELECT product_id, product_name,
product_download, product_submittal,
product_ordering_guide, product_status,
d1.download_id DownloadId,
d1.download_name DownloadName,
d2.download_id SubmittalDownloadId,
d2.download_name SubmittalDownloadName,
d3.download_id GuideDownloadId,
d3.download_name GuideDownloadName
FROM tbl_products
LEFT JOIN tbl_downloads d1
ON tbl_products.product_download=d1.download_id
LEFT JOIN tbl_downloads d2
ON tbl_products.product_submittal=d2.download_id
LEFT JOIN tbl_downloads d3
ON tbl_products.product_order_guide=d3.download_id
例如,我使用了 d1
、d2
和 d3
,但您可能希望在别名中更具描述性,以便清楚每个别名的含义join 是这样做的,像这样:
SELECT product_id, product_name,
product_download, product_submittal,
product_ordering_guide, product_status,
download.download_id DownloadId,
download.download_name DownloadName,
submittal.download_id SubmittalDownloadId,
submittal.download_name SubmittalDownloadName,
guide.download_id GuideDownloadId,
guide.download_name GuideDownloadName
FROM tbl_products
LEFT JOIN tbl_downloads download
ON tbl_products.product_download=download.download_id
LEFT JOIN tbl_downloads submittal
ON tbl_products.product_submittal=submittal.download_id
LEFT JOIN tbl_downloads guide
ON tbl_products.product_order_guide=guide.download_id
关于mysql - SQL JOINS 和命名连接列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14484848/