|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : décembre 2003 Messages : 28 ![]() |
bonjour à tous,
je souhaiterai savoir si la requête suivante est faisable (j'ai tourné le problème dans tous les sens... impossible de trouver la solution). j'ai une table pour laquelle je souhaiterai connaître le nombre de clients qui ont un n° de téléphone de renseigné ou non par société. Code :
select t1.societe, count(t1.telephone) as avec_tel, count(t2.telephone) as sans_tel from table_test t1 left join table_test t2 on (t1.societe = t2.societe) group by t1.societe where (t1.telephone <> "") and (t1.telephone is not null) and ((t2.telephone = "") or (t2.telephone is null)) bien entendu ça ne fonctionne pas. quelqu'un a une idée ? merci pour votre aide. del. |
||
|
|
00
|
|
|
#2 | ||||
|
Membre actif
![]() Inscription : janvier 2012 Messages : 117 ![]() |
Problème très similaire à celui évoqué par Florian L...
2 manières de faire: Code :
Code :
|
||||
|
|
10
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 669 ![]() |
Bonjour,
Ca serai cool d'arrêter de proposer la 2eme syntaxe qui est vraiment pourri en terme de perf et ne manquera pas de faire effondrer le serveur s'il y a un tout petit peu de volumétrie. C'est une requête scalaire qui va : - pour chaque ligne retournée par la requête principale faire une requête d'agrégation. Dans le cas présent : => 1 scannage de table_test pour faire l'agrégat => Et ensuite le SGBD va refaire 2 scannages de table_test par ligne résultat La 1ere syntaxe ne va faire qu'un seul scannage de table pour servir la requête. |
|
|
20
|
|
|
#4 |
|
Membre actif
![]() Inscription : janvier 2012 Messages : 117 ![]() |
Je partage absolument ton avis Punkoff sur l'énorme lenteur de la seconde requête. Mais pour une personne qui inverse group by et where, voir 2 solutions à un problème (une bonne et une qui l'est bien moins) et comprendre la différence me semble intéressant.
|
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : décembre 2003 Messages : 28 ![]() |
merci beaucoup à vous deux pour votre coup de main. et merci à punkoff pour son commentaire très instructif sur la deuxième proposition.
bonne journée. del. ps : et désolé pour l'inversion du group by et du where (j'étais pourtant bien réveillé ce jour là !?!!) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com