Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3155 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sql

n°32208
cris_2_100​0
Posté le 16-05-2001 à 14:48:15  profilanswer
 

soit une table avec 2 champs x et y:
je cherche a compter le nombre d'occurences de valeurs distinctes de x et y  
en gros, si c'etait possible:
'select count(distinct x, y) from table'
 
merci pour votre aide!!!!

mood
Publicité
Posté le 16-05-2001 à 14:48:15  profilanswer
 

n°32212
Fred999
Rabat-joie
Posté le 16-05-2001 à 14:51:44  profilanswer
 

select count (distinct x), count (distinct y) from table
 
 
Curieusement, ça marche :o

n°32215
cris_2_100​0
Posté le 16-05-2001 à 14:54:41  profilanswer
 

je me suis mal exprime:
je veux compter toutes les valeurs du 'couple xy
alors?

n°32216
cris_2_100​0
Posté le 16-05-2001 à 14:54:47  profilanswer
 

je me suis mal exprime:
je veux compter toutes les valeurs du 'couple xy
alors?

n°32221
shinji
Posté le 16-05-2001 à 14:59:09  profilanswer
 

Si ces 2 champs appartiennent à la même table, il y a le même nombre de valeurs pour les 2 donc tu compte soit l'un soit l'autre. Si des fois ils sont null tu les exclus de la requète:
 
select count(x) where x!=null and y!=null;

n°32225
shinji
Posté le 16-05-2001 à 15:01:36  profilanswer
 

Sinon précise mieux ta question!

n°32226
cris_2_100​0
Posté le 16-05-2001 à 15:03:33  profilanswer
 

en fait ma table na pas que 2 champs:
exemple la table suivante:
 
 X  Y  Z
 
 1  2  3
 1  2  4
 2  3  5
 
je veux connaitre le nombre d'occurences de valeurs distinctes des colonnes x et y:
ici '2'  : x=1 y= 2 et x=2 y=3
 
desole si je ne suis pas clair.....

n°32239
shinji
Posté le 16-05-2001 à 15:21:05  profilanswer
 

Voilà une idée, sinon je vois pas :
 
Tu fait un cout(*) from table; pour avoir le nombre de couple x,y y compris les doublons : select count(*) from table;
Ensuite tu retranche le nombre de doublons!
Pour connaître le nombre de doublons, tu fais une jointure de la table sur elle même:  
select count(*) from table A, table B
where A.x=B.x and A.y=B.y;
 
Et voilà:
(select count(*) from table;)
-
(select count(*)from table A,table B where A.x=B.x and A.y=B.y ;)
 
 
Dis moi si  ça marche mais normalement oui

n°32245
cris_2_100​0
Posté le 16-05-2001 à 15:31:42  profilanswer
 

la deuxieme requete ne donne pas le nombre de doublons:
si ta table n'a qu'une ligne ta requete te donnera '1'
j'ai trouve un moyen en utilisant les parametres db2
meci a tous pour votre aide

n°32246
shinji
Posté le 16-05-2001 à 15:34:23  profilanswer
 

Donne ta solution alors une fois que tu auras trouvé un moyen.

mood
Publicité
Posté le 16-05-2001 à 15:34:23  profilanswer
 

n°32250
cris_2_100​0
Posté le 16-05-2001 à 15:42:20  profilanswer
 

la soluce:
select distinct x,y from table
le systeme me donne le nombre de lignes retournées
mais bon, j'aurai bien aimé le faire avec une requete

n°32254
Fred999
Rabat-joie
Posté le 16-05-2001 à 15:46:41  profilanswer
 

OK j'arrive, je vais te trouver ça, j'ai la soluce en tête :)
Une clope et ça repart.

n°32255
BENB
100% Lux.
Posté le 16-05-2001 à 15:46:54  profilanswer
 

cris_2_1000 a écrit a écrit :

la soluce:
select distinct x,y from table
le systeme me donne le nombre de lignes retournées
mais bon, j'aurai bien aimé le faire avec une requete




 
et SELECT count(*) FROM ( SELECT distinct x,y FROM table) ?

n°32263
cris_2_100​0
Posté le 16-05-2001 à 15:55:23  profilanswer
 

>benb
 
ca marche pas; j'ai essaye
et je me demande si ca n'est pas propre a DB2....

n°32265
BENB
100% Lux.
Posté le 16-05-2001 à 15:58:53  profilanswer
 

cris_2_1000 a écrit a écrit :

>benb
 
ca marche pas; j'ai essaye
et je me demande si ca n'est pas propre a DB2....




malheureusement sous Oracle ca marche...

n°32269
Fred999
Rabat-joie
Posté le 16-05-2001 à 16:05:30  profilanswer
 

Code :
  1. select  count (distinct convert(varchar(10), x) + convert(varchar(10), y))
  2. from table


 
Marche sous Sybase.
 
Bon, c'est tordu ; il faut que tu convertisses en un varchar assez grand pour le type de données.

n°32276
shinji
Posté le 16-05-2001 à 16:18:58  profilanswer
 

BEN>
Ca marche mais c'est pas conventionnel!
C'est contradictoire avec la théorie, je veut dire par là que c'est pas conforme.
Mais bon, c'est juste pour info, je prétends rien!
un select ... from (select...) tu verra jamais ça dans les bouquins et un prof t'égorge direct.
Même si j'ai déjà fait des requètes comme ça, c'est tentant mais je me suis fait rappeler à l'ordre.
Il y a toujours un moyen de faire autrement!

n°32287
Fred999
Rabat-joie
Posté le 16-05-2001 à 16:39:24  profilanswer
 

shinji > j'avais pensé à une solution de ce genre, mais je ne connais pas assez bien la syntaxe de ce genre de trucs.
 
Et ressurgit alors l'éternel débat entre théorie et efficacité...

n°32291
BENB
100% Lux.
Posté le 16-05-2001 à 16:49:03  profilanswer
 

shinji a écrit a écrit :

BEN>
Ca marche mais c'est pas conventionnel!
C'est contradictoire avec la théorie, je veut dire par là que c'est pas conforme.
Mais bon, c'est juste pour info, je prétends rien!
un select ... from (select...) tu verra jamais ça dans les bouquins et un prof t'égorge direct.
Même si j'ai déjà fait des requètes comme ça, c'est tentant mais je me suis fait rappeler à l'ordre.
Il y a toujours un moyen de faire autrement!




j'ai jamais eu de prof de SQL :D
je coyais que les view etait faites pour eviter les SELECT ... FROM(SELECT...), preuve que donc on peut en faire :D
 
Je ne suis pas une pro du SQL c'est vrai...

n°32293
DuffBeer
Posté le 16-05-2001 à 16:50:21  profilanswer
 

>BENB : tu n'étais pas très loin
En effet, sous DB2 la requete est :
SELECT COUNT(*) FROM (SELECT DISTINCT x,y FROM table) AS temp
 
Voilà, alors heureux ?  :bounce:

n°32295
cris_2_100​0
Posté le 16-05-2001 à 16:53:24  profilanswer
 

ouahhh ca marche
merci!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

n°32303
BENB
100% Lux.
Posté le 16-05-2001 à 17:05:51  profilanswer
 

DuffBeer a écrit a écrit :

>BENB : tu n'étais pas très loin
En effet, sous DB2 la requete est :
SELECT COUNT(*) FROM (SELECT DISTINCT x,y FROM table) AS temp
 
Voilà, alors heureux ?  :bounce:




Merci...
Mais il parait que je ne suis pas conventionnelle :sweat:

n°32315
shinji
Posté le 16-05-2001 à 17:23:14  profilanswer
 

Pleure pas, c'était juste à titre d'info c'est tout!
Je ne suis pas un dieu du sql, tu en connais sûrement plus que moi même si j'ai eu un prof!
Comme dit Fred c'est le dilemne théorie-pratique!

n°32316
BENB
100% Lux.
Posté le 16-05-2001 à 17:27:58  profilanswer
 

shinji a écrit a écrit :

Pleure pas, c'était juste à titre d'info c'est tout!
Je ne suis pas un dieu du sql, tu en connais sûrement plus que moi même si j'ai eu un prof!
Comme dit Fred c'est le dilemne théorie-pratique!




non, non tu ne me trouves pas conventionnelle, ne cherches pas a te racheter...
De toute facon, le SQL je le subit plus que je ne le maitrise...
je tatonne, et si ca marche OK sinon ...

n°32323
shinji
Posté le 16-05-2001 à 17:44:27  profilanswer
 

A mon avis, tu "maîtrise" plus que moi!
Je suis en 2ème année de DUT alors pour ce que j'en ai de la pratique! Comparer à toi, ça doit pas peser grand chose!
Cependant si ça te fait plaisir de ne pas être conventionnel, alors je le répète tu n'es pas conventionnelle!
Moi en ce moement, je tatonne comme tu dit mais en php!
@+
:)

n°32324
Fred999
Rabat-joie
Posté le 16-05-2001 à 17:46:12  profilanswer
 

Haut de mon énorme expérience (au bas mot... 3 ans :lol:), je peux affirmer que le SQL nécessite parfois, comme d'autres langages, d'avoir un petit côté vaudou.
 
Dans mon bureau, on a un poulailler (oui, comme dans le loft) pour les cas extrêmes.

n°32532
DuffBeer
Posté le 17-05-2001 à 11:35:54  profilanswer
 

En SQL, la vitesse de la requête est parfois plus importante que les conventions à appliquer (un peu comme JE avec Loana dans le loft). :o  
Dans ces conditions, je pense que ma réponse est assez satisfaisante. :jap:  :hello:

 

[edit]--Message édité par DuffBeer--[/edit]

n°32537
DuffBeer
Posté le 17-05-2001 à 11:51:28  profilanswer
 

Question : Que dit Loana après un orgasme ?
Réponse : Au suivant !!!
Humour !!! :D

 

[edit]--Message édité par DuffBeer--[/edit]

n°32538
DuffBeer
Posté le 17-05-2001 à 11:55:44  profilanswer
 

Question : Comment savoir que Kenza a ouvert le frigo ?
Réponse : Il ya des traces de rouge à lévres sur le concombre !!!
Humour (bis) !!! :D    
(désolé pour le hors sujet :crazy: )

 

[edit]--Message édité par DuffBeer--[/edit]

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : sql


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)