Rechercher : dans
Par :

SQL - count distinct sur 2 champs

Dernière réponse le 6 jui 2009 à 10:47:58 Noob, le 23 oct 2008 à 11:29:49 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « SQL count distinct sur 2 champs » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
SQL - Création d'index VoirQu'est-ce qu'un index? Un index est un objet complémentaire (mais non indispensable) à la base de données permettant d'"indexer" certaines colonnes dans le but d'améliorer l'accès aux données par le SGBDR, au même titre qu'un index dans un livre ne...
SQL - Sous-requêtes VoirExpression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en...

1

TheLamia, le 23 oct 2008 à 12:08:14

Essaye :
SELECT COUNT(DISTINCT siren, nic)

Répondre à TheLamia

2

Noob, le 23 oct 2008 à 12:16:03

Erreur de syntaxe aussi :(

Répondre à Noob

3

TheLamia, le 23 oct 2008 à 12:25:46

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) ?

Répondre à TheLamia

4

chuka, le 23 oct 2008 à 12:34:11

Salut,
sinon essaies:
select count(*) from (select distinct siren, nic from ma_table)
Ca te donne le bon resultat?
@+

Répondre à chuka

5

Noob, le 23 oct 2008 à 14:06:26

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"
........

Répondre à Noob

6

Noob, le 23 oct 2008 à 14:18:57

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!! :(((

Répondre à Noob

7

chuka, le 23 oct 2008 à 14:42:52

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....

Répondre à chuka

8

Noob, le 23 oct 2008 à 15:01:16

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
++

Répondre à Noob

9

Agentg, le 17 avr 2009 à 15:41:27

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

Répondre à Agentg

10

 freedev, le 6 jui 2009 à 10:47:58

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

Répondre à freedev
Collection CommentÇaMarche.net