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 18/09/2011, 15h44   #1
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2011
Messages : 330
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 330
Points : 47
Points : 47
Par défaut problème requête SQL

bonjour j'ai le modèle relationnel suivant

et j'ai des requêtes à faire
catégorie(N_cat,nom,description)
client(N_Cl,société,contact,fonction,ville,pays)
commande(N_co,N_Cl*,N_emp*,Date_C,date_liv,date_E,ville_liv)
detailcommande(N_co*,N_pr*,quantité,remise)
employeur(n_emp,Nom,prenom,Dn,pays)
fournisseur(N_fou,societe,contact,fonction,ville,pays,type)
produit(N_pr,nom,N_fou*,N_cat*,prix,stock)

je dois donner le nom des clients qui ont commandé des produits provenant d’un pays étranger, ainsi que leur pays, les produits commandés et les pays de provenance de ces produits et je dois que je n'y arrive pas

voilà ce que j'ai fait
Code :
1
2
3
4
5
6
7
SELECT Client.nom,client.pays,produit.N_pr,fournisseur.pays
FROM client Cl,commande C,detailcommande DC,fournisseur F,produit P
WHERE Cl.N_cl=C.N_cl
AND C.N_com=DC.N_com
AND F.N_fou=P.N_fou
AND DC.N_pr=P.N_pr
AND client.pays NOT IN (SELECT pays FROM fournisseur);

j'ai essayé ça mais ça ne marche pas

voila merci d'avance
huître est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 15h59   #2
Membre du Club
 
nancy carina
Inscription : décembre 2010
Messages : 34
Détails du profil
Informations personnelles :
Nom : nancy carina

Informations forums :
Inscription : décembre 2010
Messages : 34
Points : 45
Points : 45
essais comme ça
Code :
1
2
3
4
5
6
7
8
 
SELECT Cl.nom,cl.pays,p.N_pr,f.pays
FROM client Cl,commande C,detailcommande DC,fournisseur F,produit P
WHERE Cl.N_cl=C.N_cl
AND C.N_com=DC.N_com
AND F.N_fou=P.N_fou
AND DC.N_pr=P.N_pr
AND cl.pays NOT IN (SELECT pays FROM fournisseur);
nancy_carina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 16h18   #3
Membre confirmé
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 196
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Italie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 196
Points : 298
Points : 298
Quand tu dit que ca marche pas, tu as un message d'erreur? ou bien tu as un résulat qui ne te conviens pas? A quoi ca sert la dernière ligne
Code :
cl.pays NOT IN (SELECT pays FROM fournisseur);
Ca veut ne pas lister les clients dont le pays est le meme que celui du founisseur du produit?

Utilise les jointures, c'est plus rapide
Code :
1
2
3
4
5
6
7
SELECT Cl.nom,Cl.pays,P.N_pr,F.pays
FROM client Cl
INNER JOIN commande C ON C.N_cl=Cl.N_cl
INNER JOIN detailcommande DC ON DC.N_com=C.N_com
INNER JOIN produit P ON P.N_pr=DC.N_pr
INNER JOIN fournisseur F ON F.N_fou=P.N_fou
WHERE cl.pays NOT IN (SELECT pays FROM fournisseur);
fab256 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 16h48   #4
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2011
Messages : 330
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 330
Points : 47
Points : 47
fab256 , oui c'est exactement ça la dernière ligne me sert à lister les nom des clients qui ont commandé des produits provenant d’un pays étranger donc d'un fournisseur étranger

sinon pour mon code ainsi que celui de nancy carina j'obtiens "entrer une valeur de paramêtre"

et pour le tiens fab256 j'obtiens
"erreur de synthaxe (opérateur absent)"


bon je persiste à croire que ACCESS en fait des siennes

merci pour votre aide

fab256 je ne maîtrise pas assez le SQL peux tu m'expliquer ton code avec les inner join merci
huître est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 16h52   #5
Membre du Club
 
nancy carina
Inscription : décembre 2010
Messages : 34
Détails du profil
Informations personnelles :
Nom : nancy carina

Informations forums :
Inscription : décembre 2010
Messages : 34
Points : 45
Points : 45
Citation:
Ca veut ne pas lister les clients dont le pays est le meme que celui du founisseur du produit?
je pense (selon sa conception) que le pays dans la table fournisseur est les pays étrangers (ce qu'il cherche enfin je pense)
nancy_carina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 16h55   #6
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2011
Messages : 330
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 330
Points : 47
Points : 47
j'ai aussi cette requête qui me gène

je dois donner la liste de tous les clients (qui ont déjà commandé ou non) avec la liste des noms des produits qu'ils ont commandés

la je sais que je dois utiliser une jointure externe mais le problème c'est que je ne vois pas comment faire quand il y a plusieurs tables

merci d'avance
huître est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 17h28   #7
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
déjà pour les jointures, il faudrait utiliser la syntaxe SQL92...

Citation:
je dois donner le nom des clients qui ont commandé des produits provenant d’un pays étranger, ainsi que leur pays, les produits commandés et les pays de provenance de ces produits
Ca veut dire "partout" ???

donc cela est inutile
Code :
cl.pays NOT IN (SELECT pays FROM fournisseur)
puisque cela sélectionne les clients qui habitent dans un autre pays que le fournisseur.


il faudrait reposer la question avec un petit jeu d'exemple ET de résultats

Est-ce :
"Les clients ayant commandé à l'étranger, et afficher ces clients avec leur pays de résidence" ?
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 18h31   #8
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2011
Messages : 330
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 330
Points : 47
Points : 47
je vais donner un exemple

je m'appele Robert je vis en Angleterre et je vais commander un livre de thailande

donc j'aurais comme tableau

N_cl Pays Produit pays
Robert Angleterre Livre thailande

maintenant si je m'appelle Jacky , je vis en france et je vais commande un livre de france alors je ne figurerais pas sur la liste
huître est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 19h01   #9
Membre confirmé
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 196
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Italie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 196
Points : 298
Points : 298
Et si un client habite en france et commande un livre d'un fournisseur étranger, il va figurer sur la liste?

Et si un client habite en angleterre et commande un livre d'un fournisseur anglais, il va figurer sur la liste aussi?
fab256 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 19h09   #10
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2011
Messages : 330
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 330
Points : 47
Points : 47
Et si un client habite en france et commande un livre d'un fournisseur étranger, il va figurer sur la liste? Oui

Et si un client habite en angleterre et commande un livre d'un fournisseur anglais, il va figurer sur la liste aussi?Non
huître est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 19h27   #11
Membre confirmé
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 196
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Italie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 196
Points : 298
Points : 298
Dans ce cas pourquoi ne pas l'exprimer de cette facon?
Code :
1
2
3
4
5
6
7
SELECT Cl.nom,Cl.pays,P.N_pr,F.pays
FROM client AS Cl
INNER JOIN commande AS C ON C.N_cl=Cl.N_cl
INNER JOIN detailcommande AS DC ON DC.N_com=C.N_com
INNER JOIN produit AS P ON P.N_pr=DC.N_pr
INNER JOIN fournisseur AS F ON F.N_fou=P.N_fou
WHERE cl.pays<>F.pays;
fab256 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 19h32   #12
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2011
Messages : 330
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 330
Points : 47
Points : 47
oui j'y avais déja songé mais j'ai cru entendre que ce n'etait pas possible (dire de mon prof) à moins que j'ai mal entendu

je vais essayé et je te dirais quoi

est ce que tu peux m'expliquer ta solution car j'aimerai la reprendre pour faire des jointures externe le hic c'est que j'ai un peu de mal avec la synthaxe SQL92

merci d'avance
huître est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h21.


 
 
 
 
Partenaires

Hébergement Web