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

Signaler
-
 toxine -
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?!

11 réponses

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
13
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
76
Date d'inscription
dimanche 11 février 2007
Statut
Membre
Dernière intervention
18 août 2010
30
essaye :
SELECT COUNT(DISTINCT siren, nic)
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
369
Salut,
sinon essaies:
select count(*) from (select distinct siren, nic from ma_table)
Ca te donne le bon resultat?
@+
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"
........
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
++
select count(*) from ma_table
WHERE siren IN (select distinct siren from ma_table)
AND nic IN (select distinct nic from ma_table)
Erreur de syntaxe aussi :(
Messages postés
76
Date d'inscription
dimanche 11 février 2007
Statut
Membre
Dernière intervention
18 août 2010
30
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) ?
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!! :(((
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
369
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....
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
Je recommande un séparateur dans la concaténation. Sinon 10-1500 sera identique à 101-500 (idem avec les lettres)