-4

こんにちは、次のクエリのビューを作成できません。

create view  my_View as 
select *  from product p 
LEFT JOIN product_description pd ON (p.product_id=pd.product_id)

私は2つのテーブル
TABLE1 を持っています:-列としての製品:-product_id 、column2、column3
TABLE2:-列としてのProduct_Description : -product_id、column4、column5。ここで、product_id は Product テーブルの外部キーです。

以下は私が得ているエラーです

エラー コード: 1060。列名 'product_id' が重複しています

mysql ワークベンチを使用してクエリを実行しています。エラーを見て、エイリアスを割り当てる必要があることがわかりました。しかし、5 ~ 8 個を超えるテーブルに参加する必要があるため、より良い解決策を探しています。

4

3 に答える 3

2

*両方のテーブルで同じ列名が原因でエラーが発生しています。2 つ目は、結合条件で使用しているすべてのテーブルからすべてのレコードが本当に必要でない限り、ビュー内のすべてのレコードを取得することは決して良い方法ではありません。

できることは、次のように、ビューに固有のレコードを選択することです

select p.*,pd.somefield  from product p 
LEFT JOIN product_description pd ON (p.product_id=pd.product_id)

上記のクエリでproduct_idは、テーブルからのみフェッチされ、 テーブルproductから必要なフィールドのみをフェッチできますproduct_description

于 2014-12-29T15:06:26.333 に答える
1

SELECT *結合の両方のテーブルからすべての列を選択します。ただし、どちらのテーブルにも という列があるproduct_idため、ビューには同じ名前の 2 つの列が表示されます。

すべての列をリストする必要があるため、エイリアスをproduct_description.product_id付けて区別できます。

SELECT p.product_id, p.column2, p.column3, pd.product_id AS pd_id, pd.column4, pd.column5
FROM product AS p
LEFT JOIN product_description AS pd ON p.product_id = pd.product_id
于 2014-12-29T15:06:31.673 に答える