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
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
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
Pouvez-vous non seulement utiliser SELECT *
puis dans votre code, reportez-vous à u.field1
et u2.field2
?