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

Bases de données Delphi Discussion :

Problème dans une requête SQL avec AS et ON ?


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 55
    Points
    55
    Par défaut Problème dans une requête SQL avec AS et ON ?
    Bonjour,

    J'ai la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM Contact AS c INNER JOIN Panel AS p, Sexe AS s ON c.Type=p.Code, c.Sexe=s.Code WHERE [...]
    Mais je me retrouve avec une erreur SQL :
    [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans la clause FROM
    Je pense que c'est à cause des AS et ON mais je ne vois pas pourquoi...

    Avez-vous une idée ?

    Merci,
    Mathieu

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Car tu l'as mal ecrite ^^
    ca s'ecrit comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * FROM 
    (Contact AS c INNER JOIN Panel AS p on c.Type=p.Code)
    Inner join Sexe AS s ON c.Sexe=s.Code 
    WHERE
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Ecrite comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM (Contact AS c INNER JOIN Panel AS p ON c.Type=p.Code)
    INNER JOIN Sexe AS s ON c.Sexe=s.Code WHERE [...]
    Elle ne pose plus d'erreur mais ne renvoit rien

    Je cherche la solution, je pense qu'il y a un problème d'ordre et de parenthèses ?

    Merci,
    Mathieu

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    A mon avis, le problème vient des conditions qui sont fausse dans ton where,
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Voici ma requête SQL complète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * FROM (Contact AS c INNER JOIN Panel AS p ON c.Type=p.Code)
    INNER JOIN Sexe AS s ON c.Sexe=s.Code
    WHERE c.Nom LIKE 'lam%'
    ORDER BY c.Nom,c.Prenom,c.Code_Postal,c.Ville ASC
    Le résultat est vide alors que j'ai des enregistrements...

    Je vais regarder dans la documentation SQL...

    Celle que j'avais avant de faire mes modifications était la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * FROM Contact AS c
    INNER JOIN Panel AS p ON c.Type=p.Code
    WHERE c.Nom LIKE 'lam%'
    ORDER BY c.Nom,c.Prenom,c.Code_Postal,c.Ville ASC
    Merci,
    Mathieu

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    2 possibilités :

    - Soit tu n'as aucun enregisrement qui commence par lam en minuscule (oui c'est case sensitif)
    - Soit la jointure entre Contact et Sexe n'a pas de valeur qui te permette d'avoir de réponse.

    essaie d'ecrire la requete de la manière suivante et donne moi le résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * FROM (Contact AS c INNER JOIN Panel AS p ON c.Type=p.Code)
    LEFT JOIN Sexe AS s ON c.Sexe=s.Code
    WHERE lower(c.Nom) LIKE 'lam%'
    ORDER BY c.Nom,c.Prenom,c.Code_Postal,c.Ville ASC
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Il ne semble pas aprécier le "lower". J'ai essayé juste avec le JOIN LEFT mais ça ne semble pas marcher comme je le veux.

    En fait, je souhaite remplacer "Type" et "Sexe" par le libelle correspondant dans une autre table.

    Par exemple la table SEXE :
    1 -> Homme
    2-> Femme
    J'ai renommé certains champs pour simplier la comprehension :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * FROM
    (Contact AS c INNER JOIN Panel AS p ON c.Type=p.PanelCode)
    LEFT JOIN Sexe AS s ON c.Sexe=s.SexeCode
    WHERE c.Nom LIKE 'sev%'
    ORDER BY c.Nom,c.Prenom,c.Code_Postal,c.Ville ASC
    Avec ça, j'ai bien les noms qui commencent par "sev" et le nom des panels (champ PanelLibelle) qui s'affiche. Par contre, il ne m'affiche jamais ceux qui ont l'information "Sexe" de saisie. Il m'affiche tous ceux qui n'ont pas ce champ de renseigné.

    Ce que je cherche à faire, c'est récupérer via la requête le libellé de "type" et "sexe" pour l'afficher à la place de l'information numérique. Je ne veux pas appliquer un filtre.

    Est-ce que vous comprenez ce que je cherche à réaliser ?

    Merci,
    Mathieu

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Oui je cromprend ce que tu veux faire.

    Le left join permet d'afficher les données de la table (ou ensemble) de gauche même s'il n'y a pas d'informations de correspondance dans la table de droite.

    S'il t'affiche que les données sans le champ Sexe c'est qu'elle n'est pas renseignée comme il faut. Dans tes tables la correspondance doit être exacte

    Exemple :

    Table contact : Nom , prenom , Sexe
    Table Sexe : CodeSexe,Libelle

    Données table contact :
    Martin, jean, h
    MArtin, jeanne, f

    Données Table Sexe

    h,Homme
    f,Femme
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 55
    Points
    55
    Par défaut
    Salut,

    Ce qui est étrange, c'est que c'est ce que j'ai...

    Voici des captures d'écran :











    Merci pour ton aide !

    Mathieu

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 55
    Points
    55
    Par défaut
    Salut,

    En fait, ça marche très bien !

    C'est parce que la personne que j'utilisai pour tester n'avait pas un profil correct !

    Merci pour ton aide !

    Mathieu

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

Discussions similaires

  1. Calculer la somme dan une requête SQL avec JTable
    Par kazan dans le forum Composants
    Réponses: 1
    Dernier message: 30/05/2012, 19h58
  2. probléme dans une requête sql server
    Par red_one dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/06/2009, 09h15
  3. Besoin de retrouner des 0 aussi dans une requête SQL avec JOIN
    Par Jean-Marc68 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 05/11/2007, 14h45
  4. Problème avec like dans une requête SQL
    Par Boublou dans le forum SQL
    Réponses: 2
    Dernier message: 16/08/2007, 15h46
  5. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57

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