Les Allergies
Alimentaires
Posez votre question Signaler

SQL - count distinct sur 2 champs [Résolu]

Noob - Dernière réponse le 22 sept. 2010 à 15:25
Bonjour,
J'ai un problème pour compter le nombre de fournisseurs uniques dans ma table.
J'ai essayé SELECT COUNT(DISTINCT siren)
ça, ça marche...
mais mes fournisseurs sont identifié par code SIREN + code NIC
du coup j'essaye avec SELECT COUNT(DISTINCT siren||nic)
et là, erreur de syntaxe...
pourtant avec SELECT DISTINCT siren||nic
j'arrive à afficher le bon nombre d'enregistrements...
Tout ce que je veux, c'est que la requête me les compte!!
Quelqu'un pourrait m'aider plz?!
Lire la suite 

SQL - count distinct sur 2 champs »

12 réponses
Réponse
+10
moins plus
il faut préciser un alias pour le compte pour qu'il marche
Select count(*) from (select distinct siren,nic from ma_table ) as Nb_Row
Ajouter un commentaire
Réponse
+1
moins plus
essaye :
SELECT COUNT(DISTINCT siren, nic)
Ajouter un commentaire
Réponse
+1
moins plus
TheLamia:
c'est pas du MySQL
C'est du Microsoft Query sur une BDD Informix
et ca mache pas :(

Chuka:
la requête ne passe pas non plus...
il me dit que le from ne marche pas sur la table "(SELECT"
........
Ajouter un commentaire
Réponse
+1
moins plus
select count(*) from ma_table
WHERE siren IN (select distinct siren from ma_table)
AND nic IN (select distinct nic from ma_table)
Ajouter un commentaire
Réponse
+0
moins plus
Erreur de syntaxe aussi :(
Ajouter un commentaire
Réponse
+0
moins plus
a non =)

désolé mais la c'est pas possible !

SELECT COUNT(DISTINCT siren, nic) FROM nom_de_ta_table

j'ai testé sur une de mes bases ca marche.
c'est bien du Mysql (quoique même si ca n'en est pas ca devrait marcher) ?
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
sinon essaies:
select count(*) from (select distinct siren, nic from ma_table)
Ca te donne le bon resultat?
@+
Ajouter un commentaire
Réponse
+0
moins plus
je pense que vous avez raison...
ça devrait marcher...
mais c'était sans compter sur Microsoft Query!!!
J'ai voulu mettre un alias sur la concaténation en faisant :

SELECT siren||nic as siret

et

SELECT siren||nic siret

Les 2 ne marchent pas!! :(((
Ajouter un commentaire
Réponse
+0
moins plus
Bon je jette mes dernières cartouches!!;-)
select max(rownum) from ma_table where siren||nic in (select distinct siren||nic from ma_table)
Sinon apres j'ai plus d'idée....
Ajouter un commentaire
Réponse
+0
moins plus
Bon...
cette fois il me dit que la colonne 'rownum' n'existe pas... affligeant!
je commence à penser que ce que je veux faire est impossible sous Microsoft Query!!
Je vais clôturer le sujet.
Je vais demander à mes utilisateurs de faire juste un SELECT DISTINCT siren||nic
puis de compter le nombre de lignes retournées... haha

En tout cas, merci pour votre aide
++
Ajouter un commentaire
Réponse
+0
moins plus
Tu dois concaténer les 2 champs pour ensuite faire le count.

tu utilises le cast pour mettre les 2 champs de même type

select count(distinct commande + cast(produit as nvarchar)) as test from produits where ....

a+

Stéphane
jeronimot91 - 31 déc. 2009 à 13:07
Je recommande un séparateur dans la concaténation. Sinon 10-1500 sera identique à 101-500 (idem avec les lettres)
Ajouter un commentaire
Ce document intitulé « SQL - count distinct sur 2 champs » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?