Problème requetes sql

Résolu
jaacki Messages postés 31 Statut Membre -  
kilian Messages postés 8854 Statut Modérateur -
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 8854 Statut Modérateur 1 526
 
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 Statut Membre
 
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 8854 Statut Modérateur 1 526 > jaacki Messages postés 31 Statut Membre
 
Ah justement j'avais un doute sur les alias. Merci :-)
0