Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre éclairé
    Homme Profil pro Alex V
    Etudiant administrateur systèmes et réseaux
    Inscrit en
    octobre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Nom : Homme Alex V
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant administrateur systèmes et réseaux

    Informations forums :
    Inscription : octobre 2007
    Messages : 630
    Points : 389
    Points
    389

    Par défaut Ajouter des champs à une requête après/avant execution.

    Bonjour,

    J'ai une requête A qui me retourne 2 valeurs.
    Requête A : select champ1, champ2 FROM tableA
    Résultat A: champ1, champ2.

    Seulement j'aimerai pouvoir inverser ligne/colonne. Pour cela, j'utilise UNION qui me donne alors une requête B.

    Requête B :
    select champ1 FROM tableA
    UNION
    select champ2 FROM tableB

    Résultat B
    champ1
    champ2

    Au résultat B, je souhaiterai rajouter une colonne au début qui donne la désignation des valeurs car j'ai ensuite un module qui s'occupe d'afficher selon un graphique choisis, ces valeurs. Mais pour qu'il fonctionne il a besoin d'un tableau Ligne*2.

    Résultat B
    designation1 champ1
    désignation2 champ2

    J'ai naïvement essayé :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CREATE TABLE T1
    (
     champ1 varchar(50)
    );
     
    CREATE TABLE T2
    (
     champ1 varchar(50)
    );
     
    INSERT INTO T1 ([champ1]) VALUES('designation1');
    INSERT INTO T2 ([champ1]) VALUES('designation2');
     
    SELECT A.champ1, B.champ1 FROM T1 A, tableA B;
    UNION
    SELECT C.champ1, D.champ1 FROM T2 C, tableB D;
     
    DROP TABLE T1;
    DROP TABLE T2;
    Et même si la requête s’exécute sans erreur, pas, d'affichage du résultat.
    La contrainte, c'est que les tables T1 et T2 doivent rester transparentes pour l'utilisateur de la requête et donc, elles ne peuvent être que temporaires pour l’exécution de cette requête.

    Comme pourrais-je m'y prendre pour solutionner ceci ?

    Merci d'avance.
    UNE REPONSE UTILE : &|| UN PROBLEME RESOLU :

  2. #2
    Membre confirmé Avatar de GyZmoO
    Homme Profil pro Mickaël
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    424
    Détails du profil
    Informations personnelles :
    Nom : Homme Mickaël
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : février 2006
    Messages : 424
    Points : 260
    Points
    260

    Par défaut

    Bonjour!

    Tes désignations dont tu parles sont "fixes" i.e non variables?

    Tu devrais écrire tes jointures selon la norme, c'est plus clair :

    BAD !
    SELECT A.col1, B.col2
    FROM TABLE_A A, TABLE_B B
    WHERE A.ID = B.ID

    GOOD
    SELECT A.col1, B.col2
    FROM TABLE_A A
    INNER JOIN TABLE_B ON A.ID = B.ID
    D'ailleurs je me rend compte que tu n'as pas de condition de jointure dans ta requête est-ce normal?
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

  3. #3
    Membre chevronné
    Homme Profil pro Frédéric
    Inscrit en
    juin 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Nom : Homme Frédéric
    Localisation : France

    Informations forums :
    Inscription : juin 2011
    Messages : 442
    Points : 612
    Points
    612

    Par défaut

    C'est trop simple pour être ce que tu cherches, mais au cas où :
    Code :
    1
    2
    3
    SELECT 'designation1' AS Designation, champ1 AS Valeur FROM laTable
    UNION
    SELECT 'designation2', champ2 FROM laTable;

  4. #4
    Membre éclairé
    Homme Profil pro Alex V
    Etudiant administrateur systèmes et réseaux
    Inscrit en
    octobre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Nom : Homme Alex V
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant administrateur systèmes et réseaux

    Informations forums :
    Inscription : octobre 2007
    Messages : 630
    Points : 389
    Points
    389

    Par défaut

    Nan nan, je ne fais pas de jointure. C'était juste une façon dégueulasse d'essayer de mettre les lignes en légende.

    Je vais essayer la 2ème réponse. Je n'ai plus la base sous la main, je testerai demain. Merci bien !
    UNE REPONSE UTILE : &|| UN PROBLEME RESOLU :

  5. #5
    Membre éclairé
    Homme Profil pro Alex V
    Etudiant administrateur systèmes et réseaux
    Inscrit en
    octobre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Nom : Homme Alex V
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant administrateur systèmes et réseaux

    Informations forums :
    Inscription : octobre 2007
    Messages : 630
    Points : 389
    Points
    389

    Par défaut

    Citation Envoyé par Fred_34 Voir le message
    C'est trop simple pour être ce que tu cherches, mais au cas où :
    Code :
    1
    2
    3
    SELECT 'designation1' AS Designation, champ1 AS Valeur FROM laTable
    UNION
    SELECT 'designation2', champ2 FROM laTable;
    Merci, trop simple ? peut être, mais c'est exactement ce dont j'avais besoin. Merci beaucoup pour votre aide !
    UNE REPONSE UTILE : &|| UN PROBLEME RESOLU :

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •