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 527
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 527 > 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