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 :

Regrouper les champs sur une jointure multiple


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Developpeur PHP Magento e-commerce
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Developpeur PHP Magento e-commerce
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Points : 51
    Points
    51
    Par défaut Regrouper les champs sur une jointure multiple
    Bonjour,

    J'ai à ma disposition 3 tables :
    - MAD_LTS
    - MAD_CLD
    - Trans

    Les deux premières tables ont la même structure, mais elles contiennent des données différentes. La troisième contient une liste d'enregistrements à extraire des deux tables précédentes grâce à un id sous forme de texte. chaque ID est unique, il ne peux pas apparaitre 2 fois dans une même table, comme il ne peut pas apparaitre dans les deux tables.

    Comment faire pour regrouper les résultats d'une recherche sur les tables MAD_LTS et MAD_CLD à partir de la liste contenue dans Trans?

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 910
    Points : 4 808
    Points
    4 808
    Par défaut
    Une requête UNION devrait pouvoir t'aider. fais "Recherche" ou bien dans l'aide d'Access

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    après l'union des tables MAD_LTS et MAD_CLD
    utilise l'instruction "IN" cf tuto sur le SQL

  4. #4
    Membre du Club
    Profil pro
    Developpeur PHP Magento e-commerce
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Developpeur PHP Magento e-commerce
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Points : 51
    Points
    51
    Par défaut
    j'ai fait ma requête, mais Access me renvoie "Type de données incompatible dans l'expression du critère"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    SELECT
     
        MAD_LTS.Serv_Alias1 AS [N° Liaison Commerciale],
        Null AS [N° Eqpt 1],
        Right([MAD_LTS].[Site1],Len([MAD_LTS].[Site1])-7) AS [Nom Site 1],
        Left([MAD_LTS].[Site1],6) AS [N° Site 1],
        Null AS [Nom Faisceau 1],
        Null AS [N°Accès Physique 1],
        Null AS [AFLR 1],
        Null AS Usage1,
        MAD_LTS.[Noeud1],
        MAD_LTS.Port1,
        Null AS [N° Eqpt 2],
        Right([MAD_LTS].[Site2],Len([MAD_LTS].[Site2])-7) AS [Nom Site 2],
        Left([MAD_LTS].[Site2],6) AS [N° Site 2],
        Null AS [Nom Faisceau 2],
        Null AS [N°Accès Physique 2],
        Null AS [AFLR 2],
        Null AS Usage2,
        MAD_LTS.[Noeud2],
        MAD_LTS.Port2
     
    FROM [006-002-1379] LEFT JOIN MAD_LTS ON [006-002-1379].[N° Liaison Commercial] = MAD_LTS.Serv_Alias1
     
    UNION
     
    SELECT
        MAD_CLD.Serv_Alias1 AS [N° Liaison Commerciale],
        Null AS [N° Eqpt 1],
        Right([MAD_CLD].[Site1],Len([MAD_CLD].[Site1])-7) AS [Nom Site 1],
        Left([MAD_CLD].[Site1],6) AS [N° Site 1],
        Null AS [Nom Faisceau 1],
        Null AS [N°Accès Physique 1],
        Null AS [AFLR 1],
        Null AS Usage1,
        MAD_CLD.[Noeud1],
        MAD_CLD.Port1,
        Null AS [N° Eqpt 2],
        Right([MAD_CLD].[Site2],Len([MAD_CLD].[Site2])-7) AS [Nom Site 2],
        Left([MAD_CLD].[Site2],6) AS [N° Site 2],
        Null AS [Nom Faisceau 2],
        Null AS [N°Accès Physique 2],
        Null AS [AFLR 2],
        Null AS Usage2,
        MAD_CLD.[Noeud2],
        MAD_CLD.Port2
     
    FROM [006-002-1379] LEFT JOIN MAD_CLD ON [006-002-1379].[N° Liaison Commercial] = MAD_CLD.Serv_Alias1;
    Si je fais un LEFT JOIN sans UNION, je retrouve les 35 lignes partiellement remplies de la table [006-002-1379]. Avec l'UNION, j'ai mon message d'erreur et seul le RIGHT JOIN fonctionne, mais je me retrouve avec plus de 70000 résultats... ca me sert à rien.

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    "Type de données incompatible dans l'expression du critère"
    ben là je vais avoir du mal à t'aider.
    tu as un champ qui n'est pas du même type, il faut le convertir mais il faut pour cela savoir lequel il s'agit.

    peut être un null dans un champ qui l'interdit...
    fait des tests...

  6. #6
    Membre du Club
    Profil pro
    Developpeur PHP Magento e-commerce
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Developpeur PHP Magento e-commerce
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Points : 51
    Points
    51
    Par défaut
    Tous les champs des deux tables sont des TEXT(255) pouvant être NULL ou vides et je n'ai aucun index.

  7. #7
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    je ne sais que te dire...
    chez moi la requete fonctionne parfaitement (pour peu d'avoir bien saisie les données "nom des sites" et "liaison com") avec du text(255), null et vide autorisé sans index

Discussions similaires

  1. [MySQL, PostGreSQL] Récupérer les max sur une jointure
    Par genova dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/12/2017, 15h25
  2. Réponses: 8
    Dernier message: 09/07/2008, 13h09
  3. Afficher les données d'un champ sur une ligne
    Par white-angel dans le forum Access
    Réponses: 6
    Dernier message: 30/08/2006, 11h09
  4. requete ajout caractere sur tous les champs d'une table
    Par lorenzo74 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 24/06/2006, 13h34
  5. Réponses: 3
    Dernier message: 25/07/2005, 18h41

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