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 :

Liaison sur un champ partiel ou par concaténation


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 Liaison sur un champ partiel ou par concaténation
    Bonjour,

    Pour réaliser un audit de plus de 2000 lignes, je dois combiner les données des 2 dernières tables.

    Voici une version simplifiée des tables (en syntaxe mysql, désolé ) :

    CREATE TABLE Audit(`N° Liaison commerciale` VARCHAR, `N° Site 1` VARCHAR, `Alias Site 1` VARCHAR, `N° Site 2` VARCHAR, `Alias Site 2` VARCHAR, ...);

    CREATE TABLE Trans(`Liaison commerciale` VARCHAR, `Site1` VARCHAR, `Port Site1` VARCHAR, `Site2` VARCHAR, `Port Site2` VARCHAR);

    Ces deux tables proviennent de deux endroits différents, les N° de liaisons commerciales sont identiques, je dois récupérer les champs Trans.[Port Site1] et Trans.[Port Site2], pour les insérer dans mon audit. Seulement, comme les choses sont souvent bien faites, il arrive une fois sur deux que les sites soient inversés entre les 2 tables. Pour couronner le tout, mes champs Audit.[N° Site#] et Audit.[Alias site#] sont concaténés dans la table Trans.

    Exemple:

    Dans la table Audit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    N° Liaison commerciale N° Site 1   Alias Site 1 N° Site 2   Alias Site 2
    XXXXXXXXX-001          440000      NANTES       690542      LYON11
    YYYYYYYYY-005          440000      NANTES       690826      LYON21
    Dans la table trans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Liaison commerciale   Site 1        Port1    Site 2         Port2
    XXXXXXXXX-001         440000-NANTES ZZZZ001  690542-LYON11  ZZZZ484
    YYYYYYYYY-005         690826-LYON21 ZZZZ454  440000-NANTES  ZZZZ002
    Voici ma requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Audit.[N° Liaison Commerciale], Audit.[N° Site 1], Audit.[Alias Site 1], Trans.[Port1], Audit.[N° Site 2], Audit.[Alias Site 2], Trans.[Port2]
    FROM Trans RIGHT JOIN Audit ON Trans.[Liaison commerciale] = Audit.[N° Liaison Commerciale]

  2. #2
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    A mon avis, la première chose à faire est de mettre de l'ordre dans ta table Trans.
    En créant une nouvelle table (issue de Trans), tu peux à l'aide d'Alias donner exactement les noms que tu désires à tes champs

    Après, les choses sont grandement facilitées pour réaliser ton audit .

    Concernant ta requête, elle va certainement changer si tu appliques mon idée alors... peut-être un prochain post ?
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  3. #3
    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 finalement terminé mon audit, ca a été laborieux, avec des copier/coller dans excel, on finit par y arriver, mais je crains le pire pour les suivants...

    Citation Envoyé par bernardmichel Voir le message
    A mon avis, la première chose à faire est de mettre de l'ordre dans ta table Trans.
    En créant une nouvelle table (issue de Trans), tu peux à l'aide d'Alias donner exactement les noms que tu désires à tes champs
    Mettre de l'ordre dans la table trans? en se basant sur quoi? cette table répertorie les liaisons distantes d'un opérateur telecom, son contenu n'est pas à remettre en cause et je ne vois pas en quoi changer les noms de champs avec des alias y feraient quelque chose.

  4. #4
    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 : 51
    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
    pour trans: une première requete qui tronque le champs site-alias en [site] [alias] avec les fonctions left et right
    pour Audit: une deuxième requete qui rajoute deux champs [port1] et [port2]

    une requete UNION des deux dernières requetes.
    ca te parait plus approprié?

    mais je crains le pire pour les suivants...
    t'en fait pas, on dira que tu as fait de ton mieux quand ils viendront poster...

  5. #5
    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
    Ca m'a l'air de ressembler à ce que je cherchais, je testerais ca quand j'aurais un petit moment

  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
    j'ai trouvé mon bonheur avec LEFT(trans.[Site 1], 6) et RIGHT(trans.[Site 1], LEN(trans.[Site 1]) - 7))

    merci

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

Discussions similaires

  1. [MySQL] update sur les champs qui commencent par 16
    Par z_ahlam dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/10/2010, 13h39
  2. [XI] problème avec groupe sur un champ trié par origine ?
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 11/04/2007, 15h31
  3. jointure partielle sur un champ
    Par JauB dans le forum DB2
    Réponses: 3
    Dernier message: 12/01/2007, 11h18
  4. Recherche 1 expression sur 2 champs concaténés ?
    Par seb_perl dans le forum Installation
    Réponses: 3
    Dernier message: 14/12/2006, 19h40
  5. Agir sur un champ par la saisie d'un autre champ
    Par picatchou dans le forum Access
    Réponses: 11
    Dernier message: 12/09/2006, 07h41

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