2012-04-12 46 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; 

順便說一句,我知道我可以這樣做mething like:

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 2012-04-12 13:06:49

+2

不要以爲有辦法做到這一點。在任何情況下,最好清楚地說明你正在選擇的列,而不是使用'*',因爲它允許你確定列順序,並在稍後添加大二進制列時防止出現問題。 – 2012-04-12 13:07:05

+0

更改列名字在你的模式中! :p – 2012-04-12 13:16:36

回答

5

不,沒有辦法做到這一點。但是,您應該儘量避免使用*來選擇列,所以通過此重構,您可以擺脫*,並且可以向需要添加兩列的所有列添加別名。兩隻一石二鳥! ;)

+0

我希望請求是通用的,因爲我將在PHP中使用它,它是關於通用CRUD組件。 – 2012-04-12 13:09:50