2012-04-12 6 views
3

私はそれについて何も見つかりませんでした。ここで mysql:結合のすべてのフィールドの名前を変更します。

は私のクエリです:

SELECT p.*, pa.*, a.* 
FROM produit p 
LEFT OUTER JOIN produit_attribut pa 
ON p.id=pa.id_produit 
LEFT OUTER JOIN attribut a 
ON a.id=pa.id_attribut 
ORDER BY p.id,a.id; 

しかし、問題は、それは、何かを私はテーブルのすべてのフィールドの名前を変更する方法があるかどうかを知りたいのですが、列

with the same name: 

+----+------------+-----+------------+-------------+------+-----+----+----+ 
| id | titre  | desc| id_produit | id_attribut | id | desc| val| abb| 
+----+------------+-----+------------+-------------+------+-----+----+----+ 
| 1 | Anchois | Sauc|   1 |   1 | 1 | Nomb| 2 | Nb | 
| 2 | Fromage | Sauc|   2 |   1 | 1 | Nomb| 2 | Nb | 
| 3 | Mozzarella | Sauc|   3 |   1 | 1 | Nomb| 2 | Nb | 
| 4 | Jambon  | Sauc|   4 |   1 | 1 | Nomb| 2 | Nb | 
| 5 | Roquefort | Sauc|   5 |   1 | 1 | Nomb| 2 | Nb | 
| 6 | Royale  | Sauc|   6 |   1 | 1 | Nomb| 2 | Nb | 

を返すということです(私は次のSQLは動作しません知っている):

SELECT p.* as p*, pa.* as pa*, a.* as att* 
FROM produit p 
LEFT OUTER JOIN produit_attribut pa 
ON p.id=pa.id_produit 
LEFT OUTER JOIN attribut a 
ON a.id=pa.id_attribut 
ORDER BY p.id,a.id; 

しかし、私はそうすることができることを知っているメーリングのような:

SELECT 
    p.id AS p_id, 
    p.titre AS p_titre, 
    p.description AS p_description, 
    p.prix AS p_prix, 
    p.text_detail AS p_text_detail, 
    p.img_petite AS p_img_petite, 
    p.img_grande AS p_img_grande, 
    pa.id_produit AS pa_id_produit, 
    pa.id_attribut AS pa_id_attribut, 
    a.id AS a_id, 
    a.description AS a_description, 
    a.valeur AS a_valeur, 
    a.abbreviation AS a_abbreviation 
FROM produit p 
LEFT OUTER JOIN produit_attribut pa 
ON p.id=pa.id_produit 
LEFT OUTER JOIN attribut a 
ON a.id=pa.id_attribut 
ORDER BY p_id,a_id; 

私はこれを避けたいと思います。

私はPHPでこのリクエストを使用し、一般的なCRUDコンポーネント(およびネストしたテーブル)に関するものであるため、リクエストを一般的にしたいと思います。

方法はありますか?

+1

いいえ - ありません - エイリアスが列ごとに行われます – ManseUK

+2

これを行う方法はないと思います。いずれにせよ、 '*'を使用するのではなく、選択しているカラムを明示することが最善です。なぜなら、大きなバイナリカラムが後で追加されるときにカラムの順序を決定することができ、問題を防ぐからです。 –

+0

カラムを変更するあなたのスキーマの名前! :p –

答えて

5

いいえ、それを行う方法はありません。しかし、とにかく*を使用しないで列を選択するようにしてください。このリファクタリングでは、*を取り除き、追加する必要があるすべての列にエイリアスを追加できます。 1つの石で2羽の鳥! ;)

+0

リクエストを一般的にしたいのですが、これはPHPでこれを使用します。一般的なCRUDコンポーネントです。 –