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 :

Soucis de création de requêtes sql


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 86
    Points : 41
    Points
    41
    Par défaut Soucis de création de requêtes sql
    Bonjour à tous,

    voilà, j'ai enfin réussi à établir un schéma correct pour ma base de données de location de dvd.


    Dans ce schéma vous pouvez voir que j'ai fait des tables de jonctions.
    Mon problème, étant relativement newbie en sql est de savoir quel serait le code "standard" de séléction de données sur une table de jonction.
    Par exemple, dans mon cas, comment pourrais-je faire en SQL pour afficher les clients avec leurs films empruntés?

    D'avance merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 104
    Points
    104
    Par défaut
    Salut

    Par exemple pour afficher les clients avec leur films empruntes, tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * FROM Clients, Emprunter, Films
    WHERE
    Clients.Code_abonnement = Emprunter.Code_client
    AND
    Emprunter.Code_film = Films.Code_film
    Mais je pense que tu aurais pu trouver tout seul en regardant qq tutoriaux sur Internet. Et je suis pas sur que ce message ai sa place sur le forum....

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Est-ce que ce ne serait pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT c.Nom, c.Prenom, f.Titre
    FROM Client c INNER JOIN Emprunter using (Code_Client)
                  INNER JOIN Film f    using (Code_Film)
    Pour avoir les clients n'ayant pas encore emprunter, il suffit de remplacer les INNER JOIN par des LEFT JOIN

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 168
    Points : 196
    Points
    196
    Par défaut
    Si tu veux les clients ayant emprunter avec retour + clients qui ont emprunter sans retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT c.Nom, c.Prenom, f.Titre
    FROM Client c INNER JOIN Emprunter using (Code_Client)
                  INNER JOIN Film f    using (Code_Film)
    Ok ca devrait marcher, mais si tu veux savoir qui a emprunte quoi en ce moment (il faut en plus s assurer que la date de retour est null...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT c.Nom, c.Prenom, f.Titre
    FROM Client c INNER JOIN Emprunter using (Code_Client)
                  INNER JOIN Film f    using (Code_Film)
    WHERE Date_retour is null
    A++

  5. #5
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    mais quand j'exécute n'importe laquelle de vos requêtes, elle ne fonctionnent pas.
    J'ai bien quelques données dans mes tables.
    Erreur dans la clause From.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 168
    Points : 196
    Points
    196
    Par défaut
    oula, si tu utilise Access ca ne peut pas marcher... la syntaxz est differente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    SELECT Clients.Nom, Clients.Prenom, Film.Titre
    FROM Clients 
    INNER JOIN  Emprunter 
            ON Clients.code_client = emprunter.code_client 
    INNER JOIN Film 
            ON Film.code_film = emprunter.code_film
    WHERE Date_retour is null
    Si mes souvenirs sont bon ca devrait marcher, pas garanti...

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    ben, de nouveau petite erreur : erreur de syntaxe --> opérateur absent dans l'expression 'Clients.code_client = emprunter.code_client
    INNER JOIN Films
    ON Films.code_film = emprunter.code_film'

  8. #8
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    De mémoire il me semble qu'avec access on ne peut pas mettre les jointures au meme niveau, il faut les empiler, ie il faut faire ta jointure avec film sur le resultat de ta jointure entre client et emprunter.

    A +

    [edit] 1 exemple de la syntaxe ici :
    http://www.developpez.net/forums/sho...5&postcount=10 [/edit]

  9. #9
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Syntaxe particulière à Access => Forum Access, je déplace dans le forum Access.

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si tu débute, utilise le générateur de requête QBE qui se trouve dans Access, regarde et analyse ce que tu obtiens.
    Tu peux de cette manière visualiser directement les résultats.

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 047
    Points : 24 632
    Points
    24 632
    Par défaut
    Bonjour,

    Sous Access le mieux est d'utiliser le QBE (générateur de requête) il est prévu pour ça.

    Une fois les tables placer dans le QBE les jointures sont automatiquement mises en place (cela facilite grandement l'écriture et limite les risques d'erreurs).

    Dans ton cas placer les 3 tables (film/emprunter/client)

    Il n'y a plus qu'à sélectionner les champs (un glisser poser dans les colonnes).

    Pour obtenir le code SQL un clic sur la boite à outils pour sélectionner SQL.

  12. #12
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    Exact, j'ai créé ma requête en mode création, et en ajoutant mes champs ça fonctionne.

    Je vous remercie tous de votre patience...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DAO_Filter aide à la création de requête SQL
    Par cahnory dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 4
    Dernier message: 27/05/2010, 11h31
  2. Création de requêtes SQL
    Par vorta251 dans le forum SQL
    Réponses: 9
    Dernier message: 18/06/2008, 14h59
  3. Problème création de requête SQL
    Par Snowwolf dans le forum Débuter
    Réponses: 2
    Dernier message: 06/03/2008, 15h16
  4. [SQL] Soucis d'affichage de requête SQL
    Par kilkikou dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 06/06/2006, 16h25
  5. Création d'une table par requête SQL
    Par mister3957 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 26/05/2006, 09h30

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