0

我有一个产品表和下载表。

Downloads 表有 4 个字段,ID、Name、Category 和 Download

Products 表有 3 个特定于下载的字段:下载、订购指南和提交表。这些字段中的每一个都存储下载表中记录的 ID。产品表中的这 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 - 不是唯一的表/别名:'tbl_downloads'

这个错误是有道理的,我知道它会发生,但我不知道如何解决它。我需要添加别名,但不确定在哪里。

如果我删除最后两个 JOIN 语句,一切都会按预期工作。

谢谢

4

1 回答 1

4

如果您多次加入同一个表,则需要使用唯一别名:

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,但您可能希望在别名中更具描述性,以便清楚每个连接在做什么,如下所示:d2d3

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
于 2013-01-23T16:47:58.897 回答