1

このクエリが重複 ID のエラーで返されるのはなぜですか? 私はphpを使用しています

SELECT DISTINCT * FROM products  as prd
    LEFT OUTER JOIN  (SELECT DISTINCT * FROM product_aliases) AS product_aliases
    ON product_aliases.product_id = prd.id 
    AND product_aliases.alias = '$alias'

    LEFT OUTER JOIN  (SELECT DISTINCT * FROM product_images as prdim
        LEFT OUTER JOIN  product_image_votes as prdimvt 
            ON prdimvt.product_image_id = prdim.id) AS productimages 
    ON productimages.product_id = prd.id 
WHERE prd.id = $id

エラー:

データベース エラー エラー: SQLSTATE[42S21]: 列が既に存在します: 1060 列名 'id' が重複しています SQL クエリ: SELECT DISTINCT * FROM products as prd LEFT OUTER JOIN (SELECT DISTINCT * FROM product_aliases) A​​S product_aliases ON product_aliases.product_id = prd.id AND product_aliases.alias = 'Pringles The Original' LEFT OUTER JOIN (SELECT DISTINCT * FROM product_images as prdim LEFT OUTER JOIN product_image_votes as prdimvt ON prdimvt.product_image_id = prdim.id) AS productimages ON productimages.product_id = prd.id WHERE prd.id = 1

4

1 に答える 1

2

クエリに 3 つのテーブルがあり、少なくとも 2 つのテーブルに同じ列がある可能性がありますid。選択で使用すると、複数回*選択するこれら3つのテーブルのすべての列が選択されますid

エイリアスを使用して列を指定することでこれを解決できます

SELECT DISTINCT prd.id, prd.Name FROM products  as prd
LEFT OUTER JOIN  (SELECT DISTINCT * FROM product_aliases) AS product_aliases
ON product_aliases.product_id = prd.id 
AND product_aliases.alias = '$alias'
... rest of your query here

あなたもできる

SELECT DISTINCT prd.* FROM products  as prd

それらを1つずつリストしたくない場合

于 2013-01-27T21:37:55.963 に答える