Je suis en train de coder mon édtieur de lexique pour le jeu, et je me retrouve donc avec une jolie relation m*n : chaque terme utilisé est lié à n autres termes, et ce afin d'afficher un sympatique "voir aussi..."
Pour compliquer les choses, je vois la relation comme symétrique.
J'ai donc une table T avec id et name pour les champs(on se fiche du reste)
et une table L avec id_1 et id_2 qui vous le devinez jouent le rôle de clefs secondaires pour la table T et.. la table T
Faire une recherche des articles liés n'est pas dur.
Select * FROM T INNER JOIN L ON T.id=L.id_1 WHERE L.id_2 = "val"
Encore que ceci ne me donne que la moitié des liaisons, donc première question, comment je cumule les deux sur une même requête ? En gros je veux aboutir à la liste des T.id et T.name correspondant à toutes les occurences d'une valeur soit dans L.id_1, soit dans L.id_2
On suppose que les choses sont bien faites donc que id_1 est toujours différent de id_2 et que deux couples opposés n'existent pas.. ce qui nous amène à la seconde question
Dans mon éditeur je veux pour chaque article proposer la liste des articles auquel je pourrai le lier, c'est à dire tous les articles autres que lui-même, et pour lesquels il n'existe pas de couple L avec le premier article.
en Php, il me faudrait retrouver la liste de tous les articles liés, et la retrancher à la liste des articles autres que celui en court. Est-ce que vous voyez moyen de faire cela dans une requête, pour l'élégance et la rapidité ? (je vais me pencher sur la question, mais je ne peux pas trop le faire en journée ^^)
Pour compliquer les choses, je vois la relation comme symétrique.
J'ai donc une table T avec id et name pour les champs(on se fiche du reste)
et une table L avec id_1 et id_2 qui vous le devinez jouent le rôle de clefs secondaires pour la table T et.. la table T
Faire une recherche des articles liés n'est pas dur.
Select * FROM T INNER JOIN L ON T.id=L.id_1 WHERE L.id_2 = "val"
Encore que ceci ne me donne que la moitié des liaisons, donc première question, comment je cumule les deux sur une même requête ? En gros je veux aboutir à la liste des T.id et T.name correspondant à toutes les occurences d'une valeur soit dans L.id_1, soit dans L.id_2
On suppose que les choses sont bien faites donc que id_1 est toujours différent de id_2 et que deux couples opposés n'existent pas.. ce qui nous amène à la seconde question
Dans mon éditeur je veux pour chaque article proposer la liste des articles auquel je pourrai le lier, c'est à dire tous les articles autres que lui-même, et pour lesquels il n'existe pas de couple L avec le premier article.
en Php, il me faudrait retrouver la liste de tous les articles liés, et la retrancher à la liste des articles autres que celui en court. Est-ce que vous voyez moyen de faire cela dans une requête, pour l'élégance et la rapidité ? (je vais me pencher sur la question, mais je ne peux pas trop le faire en journée ^^)