[MYSQL] Lier des lignes d'une table à l'aide d'une 2eme tabl

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Chacho, 10 Juillet 2008.

  1. Chacho
    Chacho WRInaute discret
    Inscrit:
    16 Septembre 2007
    Messages:
    72
    J'aime reçus:
    0
    Salut,

    Une petite question MYSQL :)

    J'ai une table personnes où chaque ligne est une personne identifiée par son id
    Ces personnes peuvent avoir des liens entre eux ( famille, amitié etc )

    J'ai crée une 2me table liens de la forme avec par exemple :
    id1 | lien | id1
    1 | ami | 2
    1 | famille | 5

    Du coup, quand j'affiche la profil de 1, je cherche dans la table liens tous les amis de 1. Bien sûr je veux aussi afficher 1 en tant qu'ami sur le profil de 2.
    Du coup, quand je cherches les amis de 1, je dois chercher dans cette table où id1 = 1 ou id2 = 1..

    Est-ce que j'ai choisi la bonne méthode ou devrais-je stocker plutôt la relation de 1 et 2 comme ceci :

    id1 | lien | id1
    1 | ami | 2
    2 | ami | 1

    et juste chercher par rapport a la première colonne ?

    Merci de vos avis :)
     
  2. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    Hummm ça se vaut, perso je pense que je pencherais pour la seconde méthode, ça simplifie les requêtes (mais t'obliges à gérer ça plus finement).
    Et t'as plus de possibilités, qq'un peut être ami de qq'un sans que l'autre le sois (conflict? :p )
     
  3. Chacho
    Chacho WRInaute discret
    Inscrit:
    16 Septembre 2007
    Messages:
    72
    J'aime reçus:
    0
    Merci de ta réponse Bactéries,

    En fait l'exemple n'est pas celui que je fais ( les personnes ). C'est juste que je n'aime pas utiliser les vrais concepts que je développe :p

    Pour en revenir au pb, ici il faut imaginer que si, un lien marche forcément dans les deux sens ( si 1 est ami de 2, alors 2 est ami de 1 )

    La deuxième solution prends deux fois plus de places. Mais oui, l'avantage c'est qu'elle simplifie les requêtes de consultation. Après pour éditer, il faut toujours éditer deux lignes.

    La première solution prends donc moins de place ( une ligne au lieu de deux ) mais les requêtes sont de cette forme ( enfin c'est à quoi j'arrive pour l'instant, c'est peut-être pas la plus optimisée ? )

    Requête pour récupérer pour une personne les id des personne qui ont un lien avec elle :
    ($id_personne est l'id de la personne du profil consulté)
    Code:
    SELECT id1,link,id2,p.prénom
    FROM links
    LEFT JOIN personnes p ON p.id = (CASE WHEN id1='".$id_personne."' THEN id2 ELSE id1 END)
    WHERE id1='".$id_personne."' OR id2='".$id_personne."' "
    
     
Chargement...
Similar Threads - [MYSQL] Lier lignes Forum Date
[résolu][mysql] faire un "NOT LIKE" sur une chaîne contenant des / Développement d'un site Web ou d'une appli mobile 25 Octobre 2014
[MySQL] Liste (select) avec des lignes au hasard Développement d'un site Web ou d'une appli mobile 23 Octobre 2014
[MySQL] Requête SELECT et INSERT entre 3 tables liées+Aide Développement d'un site Web ou d'une appli mobile 30 Avril 2014
[MySQL] Nombre d'enregistrements sur des horaires précis Développement d'un site Web ou d'une appli mobile 19 Juillet 2013
[MYSQL] Comment remplacer caractères dans tous les champs de toutes les tables d'une base? Développement d'un site Web ou d'une appli mobile 11 Juillet 2013
[MYSQL] Une sorte de "OR JOIN" ? Développement d'un site Web ou d'une appli mobile 5 Juillet 2013
[MySQL] sélectionner la dernière note pour chaque élève en une seule requète ? Développement d'un site Web ou d'une appli mobile 12 Avril 2012
[Mysql] Requête PDO avec variable php Développement d'un site Web ou d'une appli mobile 16 Février 2012
[Mysql] Requête PDO aléatoire Développement d'un site Web ou d'une appli mobile 7 Février 2012
[MYSQL] Tri par date Développement d'un site Web ou d'une appli mobile 7 Septembre 2011
[MySQL] rechercher une valeur dans un champ sérialisé Développement d'un site Web ou d'une appli mobile 10 Août 2011
[MySQL] Requête SELECT entre 3 tables liées Développement d'un site Web ou d'une appli mobile 10 Août 2011
[MySQL] addslashes et stripslashes Développement d'un site Web ou d'une appli mobile 9 Août 2011
[résolu] [mysql] Conditions WHERE avec AND et OR Développement d'un site Web ou d'une appli mobile 13 Mai 2011
[mysql] trier les résultats d'une requête selon une table non liée à la requête Développement d'un site Web ou d'une appli mobile 15 Avril 2011
[résolu] [mysql] passer un champ à une valeur donnée pour tous les enregistrements Développement d'un site Web ou d'une appli mobile 25 Mars 2011
[MySQL] INSERT / UPDATE conditionnel Développement d'un site Web ou d'une appli mobile 1 Février 2011
[mysql] LIMIT utile sur un champ indexé ? Développement d'un site Web ou d'une appli mobile 8 Décembre 2010
[mySQL] Découper une table et gagner en performance ? Développement d'un site Web ou d'une appli mobile 9 Janvier 2010
[MySQL] Récupérer la première ligne d'un GROUP BY Développement d'un site Web ou d'une appli mobile 14 Décembre 2009