0

ProductsテーブルとDownloadsテーブルがあります。

ダウンロードテーブルには、ID、名前、カテゴリ、ダウンロードの4つのフィールドがあります。

製品テーブルには、ダウンロードに固有の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-一意ではないテーブル/エイリアス:'tbl_downloads'

このエラーは理にかなっており、発生することはわかっていますが、修正方法がわかりません。エイリアスを追加する必要がありますが、どこにあるのかわかりません。

最後の2つの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 に答える