Une requete count plusieur table

Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010 - 29 mars 2010 à 15:46
Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010 - 29 mars 2010 à 22:03
Bonjour,

J'aimerai compter ne nombre d'enregistrement total de 4 table en une seul requête, et j'en suis incapable :(

SELECT COUNT(membre.log) as membre FROM membre UNION
SELECT COUNT(doc.id) as doc FROM doc UNION
SELECT COUNT(gal.id) as gal FROM gal UNION
SELECT COUNT(com.id) as com FROM com


ca me retourne un tableau avec juste la bonne réponse du 1er count !

Help plz

Clad

16 réponses

Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 16:21
bon après plein de teste je suis arrivé a ce quel fonctionne

SELECT (SELECT COUNT(membre.login) FROM membre),
(SELECT COUNT(doc.id) FROM doc),
(SELECT COUNT(gal.id) FROM gal),
(SELECT COUNT(com.id) FROM com)

alors c'est une bonne requête, la plus rapide ? ?


Clad
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
29 mars 2010 à 16:47
C'est quoi l'intérêt par rapport au fait de lancer 4 requetes ??
S.
0
Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 16:50
Ben c un peut aussi ca ma question et ce que ca fait gagné du temps et des ressources ?


Clad
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
29 mars 2010 à 16:57
SELECT COUNT(membre.login) AS clogin
       COUNT(doc.id) AS cdoc
       COUNT(gal.id) AS cgal
       COUNT(com.id) AS com
FROM doc, gal, com, membre

Je vais essayer de faire un test de perf...



_________________________________
Min iPomme
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
29 mars 2010 à 17:01
Euuu j'ai écris que de la m€r2... C'est le décalage horaire (1 - j'ai oublié les virgules, 2 - Il retourne le plus grand nombre de lignes... normal...) Bref oubliez mon poste


_________________________________
Min iPomme
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
29 mars 2010 à 17:31
Oué ba rien de significatif sur mes tests :
CF. ICI

Fraudais faire la même avec tes requêtes plus complètes (Dans phpmyadmin dans un onglet sql tu met ta requête tu la run ensuite tu coche Profilage) après plus qu'a actualiser une trentaine de fois, noter les temps et voir...

_________________________________
Min iPomme
0
Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 18:05
Merci pour les recherche je connaissait pas cette fonction dans mysql !

(1 total, Traitement en 0.0005 sec.)

donc c'est relativement rapide et j'ai une seul requête au lieu de 4 !

Merci a vous ;)


Clad
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
29 mars 2010 à 18:12
Messieurs,
Je pense que vu la technologie actuelle, nous n'en sommes pas à qqs pouillèmes de MHz.. LOL !!
S.
0
Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 18:21
ouai peut être mais c'est toujours plus agréable quand un site affiche rapidement ses pages, sachant qu'il y aura pas mal d'inscription dans la db donc c'est tjs mieux d'optimiser ses requêtes !


Clad
0
Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 21:06
si je peut aussi abuser !?

J'arrive pas a faire une requette :

SELECT DISTINCT cat FROM documents

jusque la pas de problème, mais j'aimerai kel ne me retourne pas les cat ou tout les enregistrements de la cat ou prive et a 1 !

documents:
id cat prive
--------------
1 1 1
2 1 0
3 2 1
4 2 1

voila un exemple et j'aimerai que la requête me retourne seulement la cat 1

mici d'avance ;)

Clad
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
29 mars 2010 à 21:08
La démarche est louable, mais le jour ou tu auras besoin d'optimiser les requetes, tu pourras te dire que derrière tout cela tu as le budget pour optimiser ton site intégralement (serveurs, répartition de charge etc..). C'est tout le bien que je te souhaite d'avoir beaucoup d'inscriptions mais imaginons que ta requete non optimisée fasse 0.005 au lieu de 0.0005 (10x plus lente), il te faudra alors 2000 inscriptions pour gagner 1 seconde sur ton serveur.
Le mieux est l'ennemi du bien.. LOL !!
C'est pas une raison pour faire du code dégueulasse non plus.. LOL !!
Bonne soirée
S.
0
Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 21:20
En même temps c pas faux ;)


Clad
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
29 mars 2010 à 21:32
> le jour ou tu auras besoin d'optimiser les requetes, tu pourras te dire que derrière tout cela tu as le budget pour optimiser ton site intégralement (serveurs, répartition de charge etc..)

Ou pas.

> Le mieux est l'ennemi du bien.. LOL !!

Moué

> C'est pas une raison pour faire du code dégueulasse non plus.. LOL !!

Oué, autant prendre des bonnes habitudes...

En même temps c pas faux ;)

En même temps c pas faux.

jusque la pas de problème, mais j'aimerai kel ne me retourne pas les cat ou tout les enregistrements de la cat ou prive et a 1 !

Un WHERE avec un mix de COUNT et SUM...
_________________________________
Min iPomme
0
Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 21:51
Alors mici pour la piste je pence avoir réussi avec :

SELECT DISTINCT cat, sum( prive ) AS pri, count( prive ) AS cou
FROM documents
HAVING cou <> pri

Clad
0
Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 21:55
ha nan c pas bon


Clad
0
Clad49 Messages postés 265 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 22:03
SELECT DISTINCT cat AS cty
FROM documents
HAVING (

SELECT sum( prive )
FROM documents
WHERE cat = cty
) <> (
SELECT count( prive )
FROM documents
WHERE cat = cty )

ca marche mais esqu'on peut la simplifier ?
Clad
0
Rejoignez-nous