Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
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 04/01/2012, 15h29   #1
Membre du Club
 
Inscription : juin 2007
Messages : 245
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : juin 2007
Messages : 245
Points : 67
Points : 67
Par défaut Requête sql et sous requête

Bonjour

Sur le site de Microsoft j'ai trouvé un exemple de sous-requête qui renvoie une date précédente sur la même ligne que la date en cours avec ce code:

http://office.microsoft.com/fr-fr/access-help/imbriquer-une-requete-a-l-interieur-d-une-autre-requete-ou-dans-une-expression-a-l-aide-d-une-sous-requete-HA010206111.aspx"


son code :

Code :
1
2
3
4
5
6
Prior Date: (SELECT MAX([Order Date]) 
FROM [Product Orders] AS [Old Orders] 
WHERE [Old Orders].[Order Date] 
 < [Product Orders].[Order Date] 
AND [Old Orders].[Product ID] 
 = [Product Orders].[Product ID])
Comment réaliser la même chose en renvoyant toujours sur la même ligne à coté de la date le nom du produit lié à la date précédente et à sa clé ?

J'y arrive pour les dates mais pas pour le nom du produit

Je pense qu'il y aura bien un crack pour me trouver la solution ?

Bonne après midi à vous tous.
Philippe608 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 17h16   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
bonjour,

Citation:
Envoyé par Philippe608 Voir le message
Comment réaliser la même chose en renvoyant toujours sur la même ligne à coté de la date le nom du produit lié à la date précédente et à sa clé ?
d'après la condition WHERE de la sous-requête:
Code sql :
1
2
3
...WHERE [Old Orders].[Order Date] 
 < [Product Orders].[Order Date] 
AND [Old Orders].[Product ID]  = [Product Orders].[Product ID])
on retient la date précédente mais pour le même produit commandé.

Apparemment, ce que tu veux obtenir n'est donc pas tout à fait la même chose, il faudrait détailler ta table, donner un exemple plus précis de ce que tu veux.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 20h04   #3
Membre du Club
 
Inscription : juin 2007
Messages : 245
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : juin 2007
Messages : 245
Points : 67
Points : 67
Bonsoir Monsieur,

Je me suis mal expliqué, en effet j'ai la table commandes
DateCommande
N°produit attaché à cette commande
N°client également attaché à cette commande

Exemple :

Date commande le 01/01/11 Client 22 produit acheté N°65477
sur la même ligne
commande précédente : 30/12/2010 client 22 produit acheté N°7458

je voudrai donc voir sur la même ligne.

01/01/11 client 22 produit 65477 précédente commande : le 30/12/2010 client 22 prod 7458

Je ne sais pas si cela est possible ?

Merci.
Bonne soirée.
Philippe608 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 21h22   #4
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
on peut faire ça en deux temps...

une 1ère requête:
R_Precedente:
Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT commande.idcommande,
       (SELECT idcommande
        FROM   commande c
        WHERE  c.datecommande = (SELECT MAX(datecommande)
                                 FROM   commande AS anciennecommande
                                 WHERE
               anciennecommande.idclient = commande.idclient
               AND
                       anciennecommande.datecommande < commande.datecommande))
       AS
       idcommandeprecedente
FROM   commande;

un peu dans le même style que la requête de ton 1er message qui pour chaque n° de commande passée par un client ramène le n° de sa commande précédente.

Puis tu fais une 2ème requête avec les assistants avec le schéma:
Commande---->R_Precedente----->Commande_1
(commande_1 obtenu en ajoutant une 2ème fois la table Commande)
où tu ramènes toutes les infos de la commande et toutes les infos de la commande précédente (dans commande_1).
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 21h48   #5
Membre du Club
 
Inscription : juin 2007
Messages : 245
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : juin 2007
Messages : 245
Points : 67
Points : 67
Merci pour votre réponse, après plusieurs essais je n'arrive pas à m'en sortir, pourriez-vous m'envoyer un exemple en zip SVP ?

Merci.
Philippe608 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 22h01   #6
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
un exemple ci-joint...
Fichiers attachés
Type de fichier : zip Philippe608.zip (22,4 Ko, 6 affichages)
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 22h11   #7
Membre du Club
 
Inscription : juin 2007
Messages : 245
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : juin 2007
Messages : 245
Points : 67
Points : 67
Merci beaucoup, maintenant c'est bon.

Bonne soirée.
Philippe608 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web