Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/06/2011, 10h26   #1
Membre régulier
 
Avatar de la_chouette
 
Inscription : avril 2010
Messages : 114
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 114
Points : 76
Points : 76
Par défaut Fusionner trois requêtes SQL

Bonjour,

je cherche à fusionner les 3 requêtes SQL suivantes:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SELECT count(id) AS tnb_total,
	count(CASE WHEN terms.STATUS = '0' THEN 1 END) AS tnb_todo, 
	count(CASE WHEN terms.STATUS = '1' THEN 1 END) AS tnb_done
FROM terms
 
SELECT count(id) AS snb_total,
	count(CASE WHEN suggests.STATUS = '0' THEN 1 END) AS snb_todo, 
	count(CASE WHEN suggests.STATUS = '1' THEN 1 END) AS snb_done
FROM suggests
 
SELECT count(id) AS mnb_total,
	count(CASE WHEN emails.STATUS = '0' THEN 1 END) AS mnb_todo, 
	count(CASE WHEN emails.STATUS = '1' THEN 1 END) AS mnb_done
FROM emails
Je vois pas comment faire une jointure sans condition...

Merci d'avance pour votre aide, cordialement.
__________________
La vitesse de la lumière étant supérieure à celle du son, beaucoup de gens sont brillants jusqu'à ce qu'ils ouvrent leur bouche.
la_chouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 10h35   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Ça dépend de ce que vous entendez pas fusionner.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 10h37   #3
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
bonjour

Pour quoi obtenir ?

pourquoi pas utiliser le UNION, cela récupère 3 lignes, qui seront traitées la l'interface de sortie ?
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 10h43   #4
Membre régulier
 
Avatar de la_chouette
 
Inscription : avril 2010
Messages : 114
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 114
Points : 76
Points : 76
Citation:
Envoyé par dehorter olivier Voir le message
pourquoi pas utiliser le UNION, cela récupère 3 lignes, qui seront traitées la l'interface de sortie ?
Effectivement, c'est toujours ça de gagner ....
__________________
La vitesse de la lumière étant supérieure à celle du son, beaucoup de gens sont brillants jusqu'à ce qu'ils ouvrent leur bouche.
la_chouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 10h47   #5
Membre régulier
 
Avatar de la_chouette
 
Inscription : avril 2010
Messages : 114
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 114
Points : 76
Points : 76
En faite ceci fusionne également les alias:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT count(id) AS tnb_total,
	count(CASE WHEN terms.STATUS = '0' THEN 1 END) AS tnb_todo, 
	count(CASE WHEN terms.STATUS = '1' THEN 1 END) AS tnb_done
FROM terms
UNION ALL
SELECT count(id) AS snb_total,
	count(CASE WHEN suggests.STATUS = '0' THEN 1 END) AS snb_todo, 
	count(CASE WHEN suggests.STATUS = '1' THEN 1 END) AS snb_done
FROM suggests
UNION ALL
SELECT count(id) AS mnb_total,
	count(CASE WHEN emails.STATUS = '0' THEN 1 END) AS mnb_todo, 
	count(CASE WHEN emails.STATUS = '1' THEN 1 END) AS mnb_done
FROM emails
retourne:
Code :
1
2
3
4
tnb_total 	tnb_todo 	tnb_done
36192 	36192 	0
0 	0 	0
1767 	700 	1067
__________________
La vitesse de la lumière étant supérieure à celle du son, beaucoup de gens sont brillants jusqu'à ce qu'ils ouvrent leur bouche.
la_chouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 10h52   #6
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par la_chouette Voir le message
Fusionner ou si vous préférez, réunir/combiner/mêler soit : (Faire une requête avec les 3 ci-dessus)
Puisqu'il faut vous prendre par la main :
Fusion 1
A, A, A, B, B, B, C, C, C
Fusion 2
A, A, A
B, B, B
C, C, C
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 30/06/2011, 10h53   #7
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
et comme cela

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT 'Terms',
       count(id) AS total,
	count(CASE WHEN terms.STATUS = '0' THEN 1 END) AS todo, 
	count(CASE WHEN terms.STATUS = '1' THEN 1 END) AS done
FROM terms
UNION ALL
SELECT 'Suggest',
        count(id) AS total,
	count(CASE WHEN suggests.STATUS = '0' THEN 1 END) AS todo, 
	count(CASE WHEN suggests.STATUS = '1' THEN 1 END) AS done
FROM suggests
UNION ALL
SELECT 'Email',
        count(id) AS total,
	count(CASE WHEN emails.STATUS = '0' THEN 1 END) AS todo, 
	count(CASE WHEN emails.STATUS = '1' THEN 1 END) AS done
FROM emails
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h39.


 
 
 
 
Partenaires

Hébergement Web