web-dev-qa-db-fra.com

Alias ​​MySQL pour les colonnes SELECT *

Je crée une vue qui utilise deux fois les données provenant de la même table. Par conséquent, les mêmes noms de colonne apparaissent deux fois.

Ainsi, je dois donner des alias à ces colonnes. Si je devais le faire, je l'écrirais comme:

SELECT u.* as 'one_*', u2.* as 'two_*'
FROM users u
LEFT JOIN relationships r ON u.id=r.id_one
LEFT JOIN users u2 ON r.id_two=u2.id

Mais ça ne marche pas. Merci de votre aide!

MODIFIER:

Voici les données que j'obtiens réellement:

|  id  | name |  id  | name |
   1     john    2     alex

Voici les données que j'aimerais obtenir (tout en utilisant un SELECT u.*, u2.*):

|  id  | name |  brother_id  | brother_name |
   1     john        2             alex
34
Pioul

Vous ne pouvez pas utiliser * avec un alias. Les alias peuvent être utilisés pour des colonnes individuelles.

Vous devrez alias chaque colonne à la place ..

Donc malheureusement, si vous avez beaucoup de colonnes, vous devrez aller:

SELECT u.col1 AS u_col1
    , u.col2 AS u_col2
    , u.col3 AS u_col3
    -- etc
    , u2.col1 AS u2_col1
    , u2.col2 AS u2_col2
    , u2.col3 AS u2_col3
    -- etc
FROM table1 AS u
-- INNER JOIN / LEFT OR RIGHT OUTER JOIN / ,
    table2 AS u2
27
Nonym

Essayez d'utiliser une requête UNION :

par exemple.

select a.typeid, a.typename from MYTABLE a where a.typeid=3 UNION select a.typeid, a.typename from MYTABLE a where a.typeid=4

1
Matt Healy

Pouvez-vous non seulement utiliser SELECT * puis dans votre code, reportez-vous à u.field1 et u2.field2?

1
Cylindric