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

PHP & Base de données Discussion :

Requete pour triangulaire


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut Requete pour triangulaire
    Bonjour à tous,

    Je suis en train de réaliser un site de recherche de permutant.

    J'aimerai mettre en place une recherche par triangulaire, je m'explique.
    Un employé qui travaille sur paris cherche un permutant sur bordeaux.

    J'aimerai rechercher les employés qui voudraient permuter de bordeaux vers paris, bon ça ça va c'est facile.
    Cependant, j'aimerai rajouté les triangulaires tel que :
    Un employé veut permuter de bordeaux à marseille.
    Un employé veut permuter de marseille à paris.
    Un employé veut permuter de paris à bordeaux.

    Je ne sais pas si j'ai été trés clair, mais je n'ai aucune idée de comment me débrouiller pour faire cette recherche.

    Avez vous des idées?
    Cordialement,
    Morgan

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Passionnant comme problématique !

    Mon premier jet donne ceci, je vais chercher à l'améliorer.

    imaginons que tu as cette table (p pour paris etc...). Bien sûr, à l'arrivée, que des id avec clés étrangères sur d'autres tables, mais là, pour plus de lisibilté, j'ai simplifié.
    Nom : Sans titre 2.jpg
Affichages : 87
Taille : 18,6 Ko


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT
    a1.id as id_1,a1.employe as emp_1, a1.lieu as lieu_1, a1.voeu as voeu_1,
    a2.id as id_2,a2.employe as emp_2, a2.lieu as lieu_2, a2.voeu as voeu_2,
    a3.id as id_3,a3.employe as emp_3, a3.lieu as lieu_3, a3.voeu as voeu_3
     
     FROM `avant` a1
    inner join avant a2 on a1.voeu=a2.lieu
    inner join avant a3 on a2.voeu=a3.lieu and a3.voeu=a1.lieu

    Donne ceci, qu'il faut après filtrer de façon pertinente.

    Nom : Sans titre 4.jpg
Affichages : 92
Taille : 79,0 Ko

    Problème 1 : comment filtrer (en PHP peut-être ?)
    Problème 2 : comment aller plus loin et introduire de la récursivité de façon à ce que tous les employés puissent voir leurs voeux accordés au delà d'un niveau 3 : ie 4, 5 ou +, tant que la boucle est bouclée au niveau des voeux ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    Merci pour ta réponse.

    J'avais pensé à faire un chose comme ceci :

    Première requête pour récupérer les personnes voulant partir de bordeaux, on stocke dans un tableau ou elles veulent aller.
    Deuxième requête pour récupérer les personnes voulant aller à Paris et dans un second tableau on stocke leur ville d'origine.

    Ensuite croiser les 2 tableaux afin de détecter le personne du premier tableau qui veulent aller dans les villes des second tableau.

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Sympa comme problème.

    Ta problématique peut se représenter sous la forme d'un graphe orienté dans lequel il te faudrait chercher les cycles.

    C'est une approche possible de ton problème (il me semble en tout cas) : tout d'abord trouver comment représenter un graphe en PhP, puis comment le parcourir pour y trouver les cycles les plus pertinents afin d'enlever à ton graphe els sommets qui composent le cycle, puis recommencer jusqu'à ce que ton graphe ne contienne plus aucun cycle. Tu peux aller voir ce site, il y a des articles intéressants à ce sujet.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

Discussions similaires

  1. Je ne trouve pas la requete pour modifier les entrées...
    Par guttts dans le forum Langage SQL
    Réponses: 7
    Dernier message: 24/08/2005, 19h17
  2. Requete pour un top 3!
    Par faayy dans le forum Access
    Réponses: 6
    Dernier message: 20/06/2005, 09h06
  3. Requete pour un débutant
    Par sqlnoob dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/05/2005, 08h55
  4. requete pour reccuperer une parti d'un resultat
    Par ViBy dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/09/2004, 09h33
  5. requete pour avoir CONTENU procedures stockees
    Par bmayer dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 11/02/2004, 13h20

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