IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

problème requête SQL


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 34
    Points : 49
    Points
    49
    Par défaut
    essais comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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);

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    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

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 34
    Points : 49
    Points
    49
    Par défaut
    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)

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    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

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    déjà pour les jointures, il faudrait utiliser la syntaxe SQL92...

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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" ?
    Merci d'ajouter un sur les tags qui vous ont aidé

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    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

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    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?

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    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

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Dans ce cas pourquoi ne pas l'exprimer de cette facon?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    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

Discussions similaires

  1. Problème requête SQL
    Par mandaillou dans le forum Langage SQL
    Réponses: 15
    Dernier message: 03/10/2005, 11h37
  2. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 15h38
  3. problème requête sql
    Par psychoBob dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2005, 17h50
  4. problème requête sql
    Par perfectdams dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/06/2005, 18h09
  5. Réponses: 8
    Dernier message: 23/10/2003, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo