Problème requetes sql

Résolu/Fermé
jaacki
Messages postés
31
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2009
- 16 juil. 2008 à 12:19
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
- 16 juil. 2008 à 18:47
Bonjour,

Je développe une base de données mysql et je bug un peu sur une requête...
En fait cette requête est composée de deux requêtes qui me ramènent un nombre chacune.

Voici les deux requêtes en question :

SELECT count( * ) AS nbGoodProducts
	FROM (
		SELECT DISTINCT id_c
		FROM uut, component_uut
		WHERE `result` =1
		AND uut.num_bench = component_uut.num_bench
		AND uut.id_b = component_uut.id_b
		AND uut.id_f = component_uut.id_f
		AND uut.uut_date = component_uut.uut_date
		AND uut.uut_date
		BETWEEN ADDDATE( '2007-10-19', INTERVAL 1 *0
		DAY )
		AND ADDDATE( '2007-10-19', INTERVAL 1 * ( 0 +1 )
		DAY )
		GROUP BY uut.uut_date 
	) AnbGoodProducts


SELECT count( * ) AS nbProducts
	FROM (
		SELECT DISTINCT id_c
		FROM uut, component_uut
		WHERE uut.num_bench = component_uut.num_bench
		AND uut.id_b = component_uut.id_b
		AND uut.id_f = component_uut.id_f
		AND uut.uut_date = component_uut.uut_date
		AND uut.uut_date
		BETWEEN ADDDATE( '2007-10-19', INTERVAL 1 *0
		DAY )
		AND ADDDATE( '2007-10-19', INTERVAL 1 * ( 0 +1 )
		DAY )
		GROUP BY uut.uut_date 
	) AnbProducts


Comme vous le voyez, ces deux requêtes me retourne deux count, jusque la pas de problème !
Je souhaiterais tout simplement "joindre" ces requêtes afin d'obtenir un résultat du style :

  nbGoodProducts |     nbProducts
-----------------|---------------------
       265       |      350


Ca doit quand même pas être trop compliqué à faire non qu'est-ce que vous en dites ??
Ben je n'y parviens pas !!

Merci à ceux qui pourront m'aider.

A+

1 réponse

kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521
16 juil. 2008 à 17:18
Salut,

Comme ceci :-)

SELECT nbGoodProducts, nbProducts FROM (

    SELECT count( * ) AS nbGoodProducts
	FROM (
		SELECT DISTINCT id_c
		FROM uut, component_uut
		WHERE `result` =1
		AND uut.num_bench = component_uut.num_bench
		AND uut.id_b = component_uut.id_b
		AND uut.id_f = component_uut.id_f
		AND uut.uut_date = component_uut.uut_date
		AND uut.uut_date
		BETWEEN ADDDATE( '2007-10-19', INTERVAL 1 *0
		DAY )
		AND ADDDATE( '2007-10-19', INTERVAL 1 * ( 0 +1 )
		DAY )
		GROUP BY uut.uut_date 
	) AnbGoodProducts
    ),

    (SELECT count( * ) AS nbProducts
	FROM (
		SELECT DISTINCT id_c
		FROM uut, component_uut
		WHERE uut.num_bench = component_uut.num_bench
		AND uut.id_b = component_uut.id_b
		AND uut.id_f = component_uut.id_f
		AND uut.uut_date = component_uut.uut_date
		AND uut.uut_date
		BETWEEN ADDDATE( '2007-10-19', INTERVAL 1 *0
		DAY )
		AND ADDDATE( '2007-10-19', INTERVAL 1 * ( 0 +1 )
		DAY )
		GROUP BY uut.uut_date 
	) AnbProducts
     );
0
jaacki
Messages postés
31
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2009

16 juil. 2008 à 18:13
juste une virgule... je me doutais que c'était un truc tout con mais là... pourtant j'ai cherché un moment ^^

Merci beaucoup en tous cas. Par contre il faut ajouter des alias pour ne pas que mysql plante, je remet la requête au cas ou quelqu'un aurait le même problème :

SELECT nbGoodProducts, nbProducts
FROM (
	SELECT count( * ) AS nbGoodProducts
	FROM (
		SELECT DISTINCT id_c
		FROM uut, component_uut
		WHERE `result` =1
		AND uut.num_bench = component_uut.num_bench
		AND uut.id_b = component_uut.id_b
		AND uut.id_f = component_uut.id_f
		AND uut.uut_date = component_uut.uut_date
		AND uut.uut_date
		BETWEEN ADDDATE( '2007-10-19', INTERVAL 1 *0
		DAY )
		AND ADDDATE( '2007-10-19', INTERVAL 1 * ( 0 +1 )
		DAY )
		GROUP BY uut.uut_date
	)AnbGoodProducts
)table1, (
	SELECT count( * ) AS nbProducts
	FROM (
		SELECT DISTINCT id_c
		FROM uut, component_uut
		WHERE uut.num_bench = component_uut.num_bench
		AND uut.id_b = component_uut.id_b
		AND uut.id_f = component_uut.id_f
		AND uut.uut_date = component_uut.uut_date
		AND uut.uut_date
		BETWEEN ADDDATE( '2007-10-19', INTERVAL 1 *0
		DAY )
		AND ADDDATE( '2007-10-19', INTERVAL 1 * ( 0 +1 )
		DAY )
		GROUP BY uut.uut_date
	)AnbProducts
)table2 



Merci kilian !
A ++
0
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521 > jaacki
Messages postés
31
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2009

16 juil. 2008 à 18:47
Ah justement j'avais un doute sur les alias. Merci :-)
0