sql - Programmation
Marsh Posté le 16-05-2001 à 14:51:44
select count (distinct x), count (distinct y) from table
Curieusement, ça marche
Marsh Posté le 16-05-2001 à 14:54:41
je me suis mal exprime:
je veux compter toutes les valeurs du 'couple xy
alors?
Marsh Posté le 16-05-2001 à 14:54:47
je me suis mal exprime:
je veux compter toutes les valeurs du 'couple xy
alors?
Marsh Posté le 16-05-2001 à 14:59:09
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;
Marsh Posté le 16-05-2001 à 15:03:33
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.....
Marsh Posté le 16-05-2001 à 15:21:05
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
Marsh Posté le 16-05-2001 à 15:31:42
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
Marsh Posté le 16-05-2001 à 15:34:23
Donne ta solution alors une fois que tu auras trouvé un moyen.
Marsh Posté le 16-05-2001 à 15:42:20
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
Marsh Posté le 16-05-2001 à 15:46:41
OK j'arrive, je vais te trouver ça, j'ai la soluce en tête
Une clope et ça repart.
Marsh Posté le 16-05-2001 à 15:46:54
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) ?
Marsh Posté le 16-05-2001 à 15:55:23
>benb
ca marche pas; j'ai essaye
et je me demande si ca n'est pas propre a DB2....
Marsh Posté le 16-05-2001 à 15:58:53
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...
Marsh Posté le 16-05-2001 à 16:05:30
Code :
|
Marche sous Sybase.
Bon, c'est tordu ; il faut que tu convertisses en un varchar assez grand pour le type de données.
Marsh Posté le 16-05-2001 à 16:18:58
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!
Marsh Posté le 16-05-2001 à 16:39:24
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é...
Marsh Posté le 16-05-2001 à 16:49:03
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
je coyais que les view etait faites pour eviter les SELECT ... FROM(SELECT...), preuve que donc on peut en faire
Je ne suis pas une pro du SQL c'est vrai...
Marsh Posté le 16-05-2001 à 16:50:21
>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 ?
Marsh Posté le 16-05-2001 à 16:53:24
ouahhh ca marche
merci!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Marsh Posté le 16-05-2001 à 17:05:51
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 ? ![]() |
Merci...
Mais il parait que je ne suis pas conventionnelle
Marsh Posté le 16-05-2001 à 17:23:14
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!
Marsh Posté le 16-05-2001 à 17:27:58
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 ...
Marsh Posté le 16-05-2001 à 17:44:27
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!
@+
Marsh Posté le 16-05-2001 à 17:46:12
Haut de mon énorme expérience (au bas mot... 3 ans ), 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.
Marsh Posté le 17-05-2001 à 11:35:54
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).
Dans ces conditions, je pense que ma réponse est assez satisfaisante.
[edit]--Message édité par DuffBeer--[/edit]
Marsh Posté le 17-05-2001 à 11:51:28
Question : Que dit Loana après un orgasme ?
Réponse : Au suivant !!!
Humour !!!
[edit]--Message édité par DuffBeer--[/edit]
Marsh Posté le 17-05-2001 à 11:55:44
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ésolé pour le hors sujet )
[edit]--Message édité par DuffBeer--[/edit]
Marsh Posté le 16-05-2001 à 14:48:15
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!!!!