Alias multiples en SQL

Alias multiples en SQL - SQL/NoSQL - Programmation

Marsh Posté le 03-05-2006 à 08:23:33    

Bonjour !
 
J'ai cherché ailleurs, mais pas trouvé...
 
Je voudrais renommer les champs d'une table en utilisant des alias, du style :
 
SELECT
  utilisateurs.id AS personne_id
FROM
  utilisateurs
WHERE
  marequete
 
Mais je voudrais renommer TOUS les champs : du style
 
SELECT
  utilisateurs.* AS personne_*
FROM
  utilisateurs
WHERE
  marequete
 
et recuperer
   personne_id
   personne_nom
   personne_prenom
   ......
 
Pourquoi ? paske pour ce que j'en fais après, c'est plus pratique d'avoir les champs renommés !!!
 
Une requete du genre
 
SELECT
  utilisateurs.id         AS personne_id
  utilisateurs.nom      AS personne_nom
  utilisateurs.prenom  AS personne_prenom
  .........
FROM
  utilisateurs
WHERE
  marequete
 
est à proscrire, paske si je rajoute un champ plus tard, je veux pas avoir à recoder toutes mes requetes....
 
Kkun aurait une piste ?
 
Merchi !

Reply

Marsh Posté le 03-05-2006 à 08:23:33   

Reply

Marsh Posté le 03-05-2006 à 08:33:35    

Citation :

est à proscrire, paske si je rajoute un champ plus tard, je veux pas avoir à recoder toutes mes requetes...


Et si tu ajoutes plusieurs champs, dont certains contiennent une quantité de données importantes, d'autres n'ayant pas de signification fonctionnelle, tu vas ralentir tes queries à mort, avec ce SELECT *. Si tu en tires un rapport, tu devras peut-être aussi le remettre en page.
 
Sinon, tu peux aussi conserver ton SELECT * mais justement renommer les champs par après, puisqu'il y a un traitement postérieur ?
 

Citation :

Kkun


Qqn, ça marche aussi bien, et ça fait moins kk. [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 03-05-2006 à 08:43:09    

Pour le ralentissement, je ne m'en fait pas, je rajouterais/supprimerais pas bcp de champs, avec pas bcp de données...
 
Et sur cette partie, la vitesse n'est pas primordiale...
 
Renommer les champs après...
 
Ben nom, paske pour le traitement posterieur, j'ai besoin des champs renommés.
 
En fait, le but final est de selectionners plusieurs utilisateurs à la fois :
 
SELECT
utilisateurs_1.* AS personne_1_*,
utilisateurs_2.* AS personne_2_*
FROM
utilisateurs AS utilisateurs_1,
utilisateurs AS utilisateurs_2
WHERE
kkchose
 
 
 
Et qqun, ça fait QQ... chacun ses choix !  :pt1cable:

Reply

Marsh Posté le 03-05-2006 à 09:22:02    

Attends, là, il y a qq chose qui ne va pas, avec ton select ? :heink:
 
Tu fais un produit cartésien pour chaque utilisateur ??? WTH ? [:pingouino]
 
KK, QQ... Sauf que la deuxième option est correcte en Français. ;-)


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 03-05-2006 à 09:30:44    

Nan, tout va bien...
 
Ce n'est pas la requete que j'utilise en realite...
 
Je selectionne dans des tables differentes, et plein d'autres choses
 
C'est juste pour 2-3 requetes assez complexes...
 
Je cherche surtout à "aliassé" tous les champs d'une table pour me simplifier la vie...
 
Pour le produit cartésien... non non, mais des sommes, des moyennes et des concatenations (qui sont "aliassé" à part) et je voudrais aussi tous les champs de chaque table, avec un alias, pour les recuperer facilement separement...
 
 
QQ, KK... la deuxieme option est korekte en francais...
 
Et pour une couette ? tu mets un Q ou un K ?
 
Paske si tu met un P, ça fait Pouette et c le bruit d'un P qui sort du Q (peut-etre en laissant une trace de KK...)
 
Désolé, c'est pas fin du tout, mais il est tôt !  :pt1cable:  :sleep:  :pt1cable:

Reply

Marsh Posté le 03-05-2006 à 09:34:23    

En SQL standard je ne vois pas de solution. Sinon il faut que tu construise dynamiquement ta requête en interrogeant la table (selon ton SGBD) qui contient le nom des colonnes de tes tables (de préférence avec le langage procédurale du SGBD si il en a un).
 
 

Reply

Marsh Posté le 03-05-2006 à 09:40:38    

C'est ce que je suis en de faire, mais c pas tres pratique et puis niveau optimisation...
 
ca rajoute une requete (pour recuperer les noms des champs) pour chaque table
 
Ou alors faut parcourir les resultats avec mysql_field_name et mysql_field_table...
 
Tant pis... l'optimisation n'est pas primordiale ici, de toute facon
 
Sur un autre forum, on m'a parlé d'utiliser une vue, mais je vois pas trop  

Reply

Marsh Posté le 03-05-2006 à 09:42:30    

Je pourrais aussi simplifier 2-3 truc en remettant le pointeur de resultat à 0  
 
tu sais, celui qui avance quand tu fais my_sql_fetch_array...
 
Sais-tu comment proceder ?

Reply

Marsh Posté le 03-05-2006 à 10:08:31    

question simple, reponse simple !  
 
mysql_data_seek
 
Autant pour moi... et merci !
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed