3

それについては何も見つかりませんでした。

これが私のクエリです:

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 コンポーネント (およびネストされたテーブル) に関するものであるため、リクエストをジェネリックにしたいと思います。

方法はありますか?

4

1 に答える 1

5

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

于 2012-04-12T13:08:28.870 に答える