begin process at 2012 05 26 12:20:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Requêtes

 > 

Comment faire un Count() sans un group by interminable ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment faire un Count() sans un group by interminable ?

vendredi 14 août 2009 à 13:06:06 | Comment faire un Count() sans un group by interminable ?

olibara

Bonjour

Est-il possible en MS SQL de faire un count sur un champ sans etre obligé d'integere tous les champs du select dans le group by


Code :
SELECT
c1,
count(c1),
c2,
c3,
c4,
.... etc
FROM T
GROUP BY c1;Comment peut on faire cela de maniere simple en MS SQL

En MySql c'est élémentaire, en MS Sql il semblerait que ce soit impossible ??

Merci de votre aide

vendredi 14 août 2009 à 14:26:42 | Re : Comment faire un Count() sans un group by interminable ?

nivsql

Tu es sur que c'est possible en MySQL ? c'est en dehors de toute logique et de toute cohérance. Ou alors c'est que Mysql ajoute implicitement tous les champs non aggrégé dans la clause group by.
SQL Server etant tres proche de la norme (contrairement a MySQL qui prend un peu trop de libertées a mon gout) il ne peut en aucun cas accepter de genre d'ecriture totalement incohérante et abérante.

vendredi 14 août 2009 à 15:11:35 | Re : Comment faire un Count() sans un group by interminable ?

olibara

Salut

Je suis certain que c'est possible en MySql et c'est en plus TRES pratique

Exemple simple

SELECT
count(addrid),
ritstat.`date`,
ritstat.addrID
FROM
ritstat
group by (addrid)

J'ai le count des dates sur une adresse

SELECT
count(date),
ritstat.`date`,
ritstat.addrID
FROM
ritstat
group by (date)

J'ai le count des adresses sur une date


vendredi 14 août 2009 à 15:33:35 | Re : Comment faire un Count() sans un group by interminable ?

nivsql

Ces synthaxe d'un point de vue Relationnel et SQL sont aberrantes.

Je vais installer un mysql pour voir ce que ca peut donner comme resultat mais du point de vu de la norme SQL et du modele relationnel sur lequel ce moteur est sensé etre construit cela n'a aucun sens.

vendredi 14 août 2009 à 16:01:15 | Re : Comment faire un Count() sans un group by interminable ?

olibara

Sincérement

MySql a peut etre des défaut mais il a beaucoup de qualité aussi !

Et permettre ce genre de syntaxe quand on sait ce que l'on veut faire c'est franchement tres pratique !!
Et c'est souvent en voulant mettre trop de barrieres pour se proteger qu'on finit par se retrouver coincé dans un monde clos !

vendredi 14 août 2009 à 16:45:34 | Re : Comment faire un Count() sans un group by interminable ?

nivsql

Je viens de faire un test apres installation de MySQL sur mon serveur de test.

J'ai créé une table du meme nom que la tienne avec 2 colonnes des noms que tu donnes, la premiere de type integer, l'autre de type datetime.

J'ai ensuite inseré tout un jeu de donnée en prenant soin de doublonner (j'ai 2 fois la ligne (1, '2007-01-01') par exemple.

J'ai ensuite executer tes requetes : Les resultats sont tout simplement INCOHERANTS ! pour ma ligne doublonnée j'ai un count a 4 !!!!!!!!!!

et de fait, j'ai bien 4 fois la date '2007-01-01' dans ma table mais en AUCUN CAS les addrID ne sont identiques,
Le retour de la requete avec count, date, addrID avec la valeur (4, '2007-01-01', 1) n'a donc strictement aucun SENS !

Non seulement la synthaxe est aberrante mais les resultats sont FAUX ! il n'y a pas dans ma table 4 fois la date '2007-01-01' pour l'addrID 1.

Voila ou mene ce genre de synthaxe permissive. J'espere sincerement que cette synthaxe n'est pas utiliser dans des logiciels comptables ou les utilisateurs de ces logiciels vont rapidement se retrouver en prison pour fraude fiscale ou detournement de fonds ou que sais je.

vendredi 14 août 2009 à 16:46:36 | Re : Comment faire un Count() sans un group by interminable ?

nivsql

C'est peut etre pour ce genre de chose que le monde des SGBDR est clos justement. C'est justement ca qui garantie la cohérance des données.

vendredi 14 août 2009 à 17:01:07 | Re : Comment faire un Count() sans un group by interminable ?

olibara

Tu as raison !

Mais j'avais dis

Et permettre ce genre de syntaxe quand on sait ce que l'on veut faire c'est franchement tres pratique !!

Dans mon cas, par construction je ne peux pas avoir de doublons Date+Adresses

vendredi 14 août 2009 à 17:05:08 | Re : Comment faire un Count() sans un group by interminable ?

nivsql

Meme si je retire le doublon, j'obtiendrais alors une reponse de (3, 2007-01-01, 1) ce qui doit signifier que dans ma table j'ai 3 fois la ligne (2007-01-01 , 1) ce qui est tout aussi FAUX puisque je ne l'aurais plus qu'une seule fois ! La requete reste FAUSSE puisqu'elle créer de l'information FAUSSE !

vendredi 14 août 2009 à 18:46:56 | Re : Comment faire un Count() sans un group by interminable ?

olibara

Mais non !

Ca signifie que tu a 3 records pour lesquels la date est 2007-01-01 peut importe l'addrID


1 2

Cette discussion est classée dans : count, ms, sql, group, by


Répondre à ce message

Sujets en rapport avec ce message

requete avec having et group by [ par mossie ] Mossie Bonjour, Je suis en train de finir la facturation pour une application web (php/mysql). Il me faut une facture avec detail (ca marche!) et sans Pb avg / group by [ par DMK04 ] Bonjour à tous,J'ai cette requête qui marche très bien (elle me retourne des entiers) :SELECT DATEDIFF( MAX( date_livraison ) , date_creation ) AS del Trouver la moyenne minimum dans un Group By [ par petitemainate ] Bonjour à tous,Voici l'intitulé de la question ^_^ "Afficher le job ayant le salaire le plus bas"J'ai donc une requête de ce genreSELECT Job, avg(Sala SQL SERVER 2008 : Durée exécution de requête variable avec les commandes STATISTICS [ par zinzineti ] Bonjour tout le monde ! Je suis sur un serveur local SQL SERVER 2008. je constate que la durée d'exécution d'une même requête varie à chaque exécution J'ai pas pu me connecter sur MS SQL SERVER ENTREPRISE 2005 [ par biboobib ] salut tout le monde, Je Suis débutant avec le software SQL SERVER 2005, après avoir l installer, il ma demander de entrer le nom du serveur, j ai essa migration de My SQL vers Ms SQL 2005 [ par bayoiaime ] Bonjour à tous ! je suis debutant sur le SGBD Mysql mais on m'a demandé de migrer la base qui fonctionne bien sur mysql vers Mssql 2005. Ainsi CSV SQL [ par aymen8219 ] bonjour, mon probleme c'est lorsque je fait l'import d'un fichier csv vers mysql j'ai un probleme dans les chiffes négative et les chiffre avec virgu Probleme de GROUP BY [ par etu54 ] Bonjour et merci de prendre ces quelques minutes pour lire le post, Je débute dans le Access et j'ai un probleme qui me fait perdre la tete Voila j'a Problème requète avec Group By [ par xxLoloxx ] Bonsoir, Je suis actuellement bloqué sur une requête que je vous ai simplifié pour les besoins de compréhension. En oracle, il est impossible d'effec Group By ? [ par mondrone ] Bonjour, comme précisé par la rubrique choisie, ma question est à propos du fonctionnement de MySQL disons.Voila :en gros et pour faire simple, j'ai d


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales