2016-04-27 6 views
0

エラー#1060が発生しました - 重複する列名 'pizzeria'と私はそれを修正する方法がわかりません。私のmySQLクエリのエラーを修正する方法を理解するのに苦労しています

質問は: 最も安いピーマンピザを提供しているピザを見つけてください。ネクタイの場合は、一番安いペッポトーニ・ピッツェリアをすべて返す。

SELECT C.pizzeria 
FROM (SELECT pizzeria FROM Serves WHERE pizza="pepperoni") C 
LEFT JOIN 
(SELECT A.pizzeria, A.price, B.pizzeria, B.price 
FROM Serves A, Serves B 
WHERE A.pizza = "pepperoni" and B.pizza="pepperoni" and A.price>B.price) D 
ON C.pizzeria = D.pizzeria 
WHERE D.pizzeria is NULL 

答えて

2

次の問合せをしてくださいしてみてください。

SELECT C.pizzeria 
FROM (SELECT pizzeria FROM Serves WHERE pizza="pepperoni") C 
LEFT JOIN 
(SELECT A.pizzeria AS apizzeria, A.price, B.pizzeria AS bpizzeria, B.price 
FROM Serves A, Serves B 
WHERE A.pizza = "pepperoni" and B.pizza="pepperoni" and A.price>B.price) D 
ON C.pizzeria = D.apizzeria 
WHERE D.pizzeria is NULL; 

この行SELECT A.pizzeria, A.price, B.pizzeria, B.priceは、以下のように設定された中間結果を生成します。

pizzeria price pizzeria price 
..   ..  ...  ... 

あなたがD.pizzeriaを使用するときに、それに対応する列として検索しますduplicate。実際には、D.pizzeriaA.pizzeriaB.pizzeriaから選択している間に、あいまいな状況に閉じ込められます(どれを選択するか?)。だから列エイリアシングを使用してこれを取り除く。

1

左の結合構文では、a.pizzeriaとb.pizzeriaがリストされています。そのインライン・ビューはc.pizzeriaに結合されていますが、コンパイラーは結合しているインライン・ビューのピザ列を知ることができません。

私は、オプティマイザに非常に多くの作業をさせるため、実際に何を達成しようとしているのか非常に興味があります。

関連する問題