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 MySQL Discussion :

Coder des relations réciproques entre A et B


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut Coder des relations réciproques entre A et B
    J'ai une table de relations, ce sont des vols entre villes.
    Voilà je cherche à identifier des relations réciproques, de A vers B qui ont aussi la réciproque de B vers A et isoler tout ce petit monde avec un code particulier.
    Et je patauge avec les join et autres union, je ne vois pas comment m'y prendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT r1.`Ori` , r1.`Des`
    FROM `rt_air_rail_6_22_` r1
    INNER JOIN `rt_air_rail_6_22_` r2 ON r1.`Ori` = r2.`Des`
    AND r1.`des` = r2.`Ori`
    Ceci me donne une liste mais je ne suis vraiment pas certain que ce soit bien la liste des réciproques.
    En plus, je veux que ces réciproques répondent à une condition sur le temps disponible à destination, ce qui complique légèrement mon problème.

    Merci d'avance pour l'aide

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    A première vue, ta requête me semble bonne.
    Par contre je ne comprends pas la suite du besoin :
    En plus je veux que ces réciproques répondent à une condition sur le temps disponible à destination,
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    ben j'ai une condition supplémentaire sur un critère de durée, je croyais avoir une seconde question mais j'ai réussi à mettre mes critères dans la requête indiquée en dessous.
    Ce qui importait surtout c'est d'avoir confirmation que ma requête était bonne: tu m'as rassuré, cinephil, merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT r1.`Ori` , r1.`Des`
    FROM `rt_air_rail_6_22_` r1
    INNER JOIN `rt_air_rail_6_22_` r2 ON r1.`Ori` = r2.`Des`
    AND r1.`des` = r2.`Ori`
     WHERE r1.tpsdispo>"08:29:00" and r1.tpsdispo>"08:29:00"
    and r1.dtype=101
    en fait la question ultime pour moi c'est de faire ensuite un update sur une nouvelle colonne; comment pourrais je m'y prendre? J'essaye de transformer ce select en update et je ne vois pas bien comment faire...

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par EnRadeSurEclipse Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT r1.`Ori` , r1.`Des`
    FROM `rt_air_rail_6_22_` r1
    INNER JOIN `rt_air_rail_6_22_` r2 ON r1.`Ori` = r2.`Des`
    AND r1.`des` = r2.`Ori`
     WHERE r1.tpsdispo>"08:29:00" and r1.tpsdispo>"08:29:00"
    and r1.dtype=101
    Euh... tu as deux fois la même condition dans le WHERE !

    en fait la question ultime pour moi c'est de faire ensuite un update sur une nouvelle colonne; comment pourrais je m'y prendre? J'essaye de transformer ce select en update et je ne vois pas bien comment faire...
    Tu veux mettre à jour quelle colonne et lui donner quelle valeur ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    Ben mon update commencerait ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    update `rt_air_rail_6_22_` r
    set 
    r.atype=r.atype+10
    where ...
    et ben pis pour la suite je ne vois pas bien clair, c'est le moins que l'on puisse dire.

  6. #6
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    Bon, en fait je m'en tire en créant une table provisoire, VIEW qui contient donc uniquement mes relations réciproques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE  ALGORITHM =  UNDEFINED VIEW `rt_air_rail_6_22_reciproques`   AS SELECT r1.`Ori` , r1.`Des` , r1.`dId` , r1.`dHdep` , r1.`dHArr` , r1.`dTemps` , r1.`dTVeh` , r1.`dTMap` , r1.`dTAtt` , r1.`dTAtt1` , r1.`dPole` , r1.`dText` , r1.`dType` , r1.`tpsDispo` , r1.`aType` , r1.`aId` , r1.`aHdep` , r1.`aHArr` , r1.`aTemps` , r1.`aTVeh` , r1.`aTMap` , r1.`aTAtt` , r1.`dx` , r1.`dy` , r1.`ax` , r1.`ay`
    FROM `rt_air_rail_6_22_` r1
    INNER JOIN `rt_air_rail_6_22_` r2 
    ON r1.`Ori` = r2.`Des` AND r1.`des` = r2.`Ori`
    WHERE r1.tpsdispo > "08:29:00"
    AND r2.tpsdispo > "08:29:00"
    Mais je reste preneur d'une solution me permettant un update sur cette sélection, ce qui ne me semble pas totalement simple...

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

Discussions similaires

  1. une jointure pour identifier des relations réciproques
    Par EnRadeSurEclipse dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/03/2010, 11h59
  2. Créer par code des relations entre tables d'une même base ?
    Par AndréPe dans le forum Modélisation
    Réponses: 2
    Dernier message: 21/11/2007, 18h27
  3. Réponses: 7
    Dernier message: 20/08/2007, 13h57
  4. Définir des relations entre des blocs de données
    Par jeunot0108 dans le forum Forms
    Réponses: 7
    Dernier message: 18/07/2007, 14h56
  5. Récupération des relations entre tables
    Par Themacleod1980 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/02/2006, 11h34

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