Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2012, 04h15   #1
Invité régulier
 
Inscription : janvier 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 31
Points : 9
Points : 9
Par défaut Un petit problème avec une requête SQL

bonjour,
j'ai cet resultat apres avoir executer cette requette
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
SELECT DISTINCT com1.noCommande AS noCommande1, com2.noCommande AS noCommande2, com1.dateCommande AS dateCommande
FROM Commande com1, Commande com2
WHERE com1.dateCommande = com2.dateCommande 
AND com1.noCommande <> com2.noCommande
  4  /
 
NOCOMMANDE1 NOCOMMANDE2 DATECOMMAN
-----------      ----------- ----------
          3           2              02/06/2000
          2           3              02/06/2000
          6           5              09/07/2000
          5           6              09/07/2000
          8           7              15/07/2000
          7           8              15/07/2000
 
6 rows selected.
comme vous voyez j' ai des doublons ce que je dois afficher ca devrais etre ca
Code :
1
2
3
4
5
6
 
NOCOMMANDE1 NOCOMMANDE2 DATECOMMAN
----------       - ----------- ----------
          3           2                02/06/2000
          6           5                09/07/2000
          8           7                15/07/2000
ce que je dois avoir comme resultat c'est exctement la 1/2 du resultat obtenu
mais j'arrive pas a eliminer les doublons au niveau de la date j'ai essayé avec une vue VIEW et par la suite faire un SELECT DISTINCT SUR LA DATECOMMANDE mais ca marche pas
bienvenue a toutes suggestions
merci d'avance
ayago est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 07h50   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 669
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 669
Points : 2 680
Points : 2 680
Bonjour,


je ne comprend pas bien le besoin, vu que vous avez omis pas mal de choses pour quel l'on comprenne votre cas.

Ceci étant dit au lieu d'utiliser un "<>" utilisez un ">"

Il y a peut être d'autre solutions plus approprié, mais pour ça il faudrai que vous développiez un peu
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 09/02/2012, 09h06   #3
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 807
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 807
Points : 3 005
Points : 3 005
Bonjour,

Code :
1
2
 
GROUP BY DATECOMMAN
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 09/02/2012, 10h17   #4
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 929
Points : 1 929
Bonjour,
Citation:
Envoyé par pc75 Voir le message
Bonjour,

Code :
1
2
 
GROUP BY DATECOMMAN
Ca ne fonctionnera que si tu appliques une fonction d'aggregation sur NOCOMMANDE1 et NOCOMMANDE2, et ici je ne vois pas trop quelle fonction appliquer...

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 14h44   #5
Membre actif
 
Inscription : janvier 2012
Messages : 117
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 117
Points : 173
Points : 173
Ta requête permet d'afficher toutes les "paires" de commandes qui ont eu lieu. Par exemple, si tu as 4 commandes le 02/06, tu vas te retrouver (moyennant l'utilisation du > ou < noté par punkoff) avec:
Code :
1
2
3
4
5
6
7
8
9
 
NOCOMMANDE1 NOCOMMANDE2  DATECOMMAN
--------------------------------------------
           1          2      02/06/2000
           1          3      02/06/2000
           1          4      02/06/2000
           2          3      02/06/2000
           2          4      02/06/2000
           3          4      02/06/2000
J'avoue ne pas en comprendre le but... Le nombre de commandes par jour aurait plus de sens pour moi, ou une sorte de liste des commandes par jour.
KookieMonster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 19h20   #6
Invité régulier
 
Inscription : janvier 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 31
Points : 9
Points : 9
Par défaut eclaircissement

au fait, si on prends comme exemple les deux premieres lignes du resultat
Code :
1
2
3
4
NOCOMMANDE1 NOCOMMANDE2 DATECOMMAN
-----------      ----------- ----------
          3           2              02/06/2000
          2           3              02/06/2000
c'est la meme chose car les commandes 2 et 3 ont étaient effectuer à la meme date alors il faut que j'affiche juste une des deux
le GROUP BY ça marchera pas

pour plus d'aide voici ma table de base dont je dois faire le tris
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
SELECT  DISTINCT c1 AS commande1, c2 AS commande2, d1 AS dateCommande FROM (SELECT com1.noCommande AS c1, com2.noCommande AS c2, 
com1.dateCommande AS d1 FROM Commande com1, Commande com2
WHERE com1.dateCommande = com2.dateCommande)
 
 COMMANDE1  COMMANDE2 DATECOMMAN
---------- ---------- ----------
         1          1 01/06/2000
         3          2 02/06/2000
         2          2 02/06/2000
         3          3 02/06/2000
         2          3 02/06/2000
         4          4 05/07/2000
         6          5 09/07/2000
         5          5 09/07/2000
         6          6 09/07/2000
         5          6 09/07/2000
         8          7 15/07/2000
         7          7 15/07/2000
         8          8 15/07/2000
         7          8 15/07/2000
 
14 rows selected.
ayago est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 09/02/2012, 19h48   #7
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Salut,

Lis entièrement ce que te disent les gens !!
Punkoff te donnait la solution, KookieMonster le répète.

En fait, ton critère de d'auto-jointure est symétrique.
Donc si a est en relation avec b, alors b est également en relation avec a. Ce n'est pas le cas de ">" : si a est en relation avec b alors b ne sera pas en relation avec a.

Je suppose qu'il faut t'écrire la requête, sinon tu vas encore une fois passer à côté :
Code :
1
2
3
4
5
 
SELECT DISTINCT com1.noCommande AS noCommande1, com2.noCommande AS noCommande2, com1.dateCommande AS dateCommande
FROM Commande com1, Commande com2
WHERE com1.dateCommande = com2.dateCommande 
AND com1.noCommande > com2.noCommande
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h57.


 
 
 
 
Partenaires

Hébergement Web