Précédent   Forum du club des développeurs et IT Pro > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 11h10   #1
darkwall_37
Membre éclairé
 
Homme Alex V
Etudiant administrateur systèmes et réseaux
Inscription : octobre 2007
Messages : 609
Détails du profil
Informations personnelles :
Nom : Homme Alex V
Âge : 24
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : octobre 2007
Messages : 609
Points : 378
Points : 378
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 :
darkwall_37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 15h03   #2
GyZmoO
Membre confirmé
 
Avatar de GyZmoO
 
Homme Mickaël
Ingénieur développement logiciels
Inscription : février 2006
Messages : 423
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 28
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 : 423
Points : 272
Points : 272
Envoyer un message via MSN à GyZmoO
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 :

Citation:
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.
GyZmoO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 16h33   #3
Fred_34
Membre expérimenté
 
Homme Frédéric
Inscription : 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 : 576
Points : 576
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;
Fred_34 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2013, 17h15   #4
darkwall_37
Membre éclairé
 
Homme Alex V
Etudiant administrateur systèmes et réseaux
Inscription : octobre 2007
Messages : 609
Détails du profil
Informations personnelles :
Nom : Homme Alex V
Âge : 24
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : octobre 2007
Messages : 609
Points : 378
Points : 378
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 :
darkwall_37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 14h37   #5
darkwall_37
Membre éclairé
 
Homme Alex V
Etudiant administrateur systèmes et réseaux
Inscription : octobre 2007
Messages : 609
Détails du profil
Informations personnelles :
Nom : Homme Alex V
Âge : 24
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : octobre 2007
Messages : 609
Points : 378
Points : 378
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 :
darkwall_37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h32.


 
 
 
 
Partenaires

Hébergement Web