IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Problème avec alias (AS)


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut Problème avec alias (AS)
    hello le monde,

    voila j'utilise la commande suivante pour faire une jointure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
    FROM maTableA
    LEFT JOIN maTableB ON maTableA.id = maTableB.uid
    WHERE maCondition = (
    SELECT maSelection
    FROM maTableC
    WHERE XYZ = 'lorem ipsum' )
    LIMIT 0 , 5
    Ca fonctionne très bien mais le problème est que mysql me renvoit un tableau qui est pas facilement manipulable depuis PHP du fait qu'il peut y avoir deux fois la colonne "ID" par exemple.

    D'après mes recherche la solution se trouve dans les alias. Du coup je fabrique ceci (qui fonctionne aussi et qui RESOUD le problème):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT A.id AS 'blabla', A.colonne2 AS 'blab' ............
    FROM maTableA A
    LEFT JOIN maTableB B ON A.id = B.uid
    WHERE maCondition = (
    SELECT maSelection
    FROM maTableC
    WHERE XYZ = 'lorem ipsum' )
    LIMIT 0 , 5
    Le seul problème est que le select devient hyper hyper long car ma table est assez longue. N'es t il pas possible de dire a mysql qu'il me revoit tout les champ avec un préfixe ? Avec une commande comme ceci:

    J'espère que je me suis bien expliquer car ce n'est pas facile... Merci

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    1) Il faut éviter de ranimer la guerre des étoiles !

    2) Plutôt que le WHERE avec une sous requête corrélée, pourquoi ne pas faire une seconde jointure ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre expérimenté
    Inscrit en
    Janvier 2012
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 145
    Par défaut
    D'accord avec Cinephil, autant avoir une requête claire dont on sait ce qu'elle renvoie, que des SELECT *. Cela facilitera la maintenance...
    Autre remarque, peux tu faire sans le LIMIT? Je ne vois pas de ORDER BY dans ta requête, donc comment connais tu les premiers enregistrements retournés?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut
    CinePhil>
    1) Thx, après avoir lu cette page je comprend mieux pourquoi il ne vaudrai mieux ne pas utiliser le *. Néanmoins a titre d'info, es t il possible de faire ce que je demandais ? CAD une sorte de SELECT * AS 'prefixA_' .

    2) Je ne comprend pas bien la, selon moi le WHERE est obligatoire ? Comment tu ferait ca sinon ?

    KookieMonster>
    Le LIMIT est obligatoire dans mon cas .... faudrait t il le faire sans ? si oui, pk ?
    Par contre c'est vrai que j'ai oublier ORDER BY.... THX

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par jeanpierre215 Voir le message
    CinePhil>
    1) Thx, après avoir lu cette page je comprend mieux pourquoi il ne vaudrai mieux ne pas utiliser le *. Néanmoins a titre d'info, es t il possible de faire ce que je demandais ? CAD une sorte de SELECT * AS 'prefixA_' .
    Pas à ma connaissance.
    En plus, maintenant que tu as compris que ce n'est pas bien de vouloir le faire...

    2) Je ne comprend pas bien la, selon moi le WHERE est obligatoire ? Comment tu ferait ca sinon ?
    Ben avec des abstractions "matableA", "matableB", "macondition", difficile de comprendre précisément ce que tu cherches à faire mais d'une manière générale, une requête corrélée est souvent remplaçable par une jointure qui est beaucoup plus efficace.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre expérimenté
    Inscrit en
    Janvier 2012
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 145
    Par défaut
    Pour le limit, ce n'est pas une opération ensembliste et elle ne fait pas partie des normes SQL. Quand tu l'utilises (arrêtez moi si je dis des bêtises), tu t'en remets à ton SGBD pour savoir quelles lignes il va bien pouvoir te renvoyer. Sur un autre implémentant cette fonction, le résultat serait peut-être différent.

Discussions similaires

  1. Petit problème avec alias
    Par chicabonux dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/09/2009, 12h22
  2. Problème avec un alias
    Par Gnux dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/09/2008, 22h09
  3. Problème avec un alias
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 07/09/2006, 22h34
  4. Réponses: 4
    Dernier message: 21/08/2006, 09h38
  5. Problème avec POE attribut Alias
    Par vodevil dans le forum Modules
    Réponses: 1
    Dernier message: 04/05/2006, 09h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo