Trier en fonction de deux tables.
Fermé
Yohann9633
Messages postés
9
Date d'inscription
mardi 3 juillet 2012
Statut
Membre
Dernière intervention
22 janvier 2015
-
29 nov. 2014 à 22:19
jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 - 1 déc. 2014 à 19:47
jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 - 1 déc. 2014 à 19:47
A voir également:
- Trier en fonction de deux tables.
- Fonction si et - Guide
- Excel trier par ordre croissant chiffre - Guide
- Deux ecran pc - Guide
- Tables des matières word - Guide
- Deux comptes whatsapp - Guide
5 réponses
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
30 nov. 2014 à 01:03
30 nov. 2014 à 01:03
Bonjour,
J'avoue ne pas vraiment avoir totalement compris ton besoin
Déjà.. il nous faudrait la structure de tes tables.
(c'est à dire : leurs noms .. les champs qu'elles contiennent... et à quoi elles servent..)
Car j'ai l'impression (lorsque je vois un champ "page" dans ta table "membre" ) que tu as une petite erreur dans la structure de ta BDD ....
Logiquement (d'après ce que je comprend vu tes requêtes..) tu devrais avoir :
- Une table membre (id_membre, nom, login......)
- Une table Page (id_page,title...,id_membre_proprietaire)
- Une table PageVues ( id_vue , id_page, id_membre, date_lecture ...)
Ainsi.. un membre peut posseder Une ou plusieurs pages ( la liaison s'effectuant par l'id_membre / id_membre_proprietaire)
Une page peut être VUE par un ou plusieurs membres .. la relation se faisant par l'id_page...
Il te sera alors beaucoup plus facile de manipuler tes tables comme bon te semble pour récupérer les information qui t'interessent....
Par exemple.. à partir de MON modèle.. si je veux connaitre toutes les pages VUES par un Membre (sauf la sienne) .. il me suffirait de faire un truc du genre :
J'avoue ne pas vraiment avoir totalement compris ton besoin
selectionner les pages qui : N'est pas celle de l'utilisateurs connecté, et les pages qu'il n'a pas vue qui sont dans la table "pagevue" possèdant l'ID du joueurs qui les a vu et la page qu'il a vu.
Déjà.. il nous faudrait la structure de tes tables.
(c'est à dire : leurs noms .. les champs qu'elles contiennent... et à quoi elles servent..)
Car j'ai l'impression (lorsque je vois un champ "page" dans ta table "membre" ) que tu as une petite erreur dans la structure de ta BDD ....
Logiquement (d'après ce que je comprend vu tes requêtes..) tu devrais avoir :
- Une table membre (id_membre, nom, login......)
- Une table Page (id_page,title...,id_membre_proprietaire)
- Une table PageVues ( id_vue , id_page, id_membre, date_lecture ...)
Ainsi.. un membre peut posseder Une ou plusieurs pages ( la liaison s'effectuant par l'id_membre / id_membre_proprietaire)
Une page peut être VUE par un ou plusieurs membres .. la relation se faisant par l'id_page...
Il te sera alors beaucoup plus facile de manipuler tes tables comme bon te semble pour récupérer les information qui t'interessent....
Par exemple.. à partir de MON modèle.. si je veux connaitre toutes les pages VUES par un Membre (sauf la sienne) .. il me suffirait de faire un truc du genre :
SELECT * FROM PageVues PV LEFT JOIN Page P ON (PV.id_page = P.id_page) LEFT JOIN membre M ON (M.id_membre = PV.id_membre) WHERE P.id_membre_proprietaire <> '$tt' AND PV.id_membre = '$tt'
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
30 nov. 2014 à 20:03
30 nov. 2014 à 20:03
Bonsoir,
ce code devrait faire l'affaire....
PS1 : A ce que je vois.. tu utilises du TEXTE pour ton champ "page" ...
Pour des raisons de performances et éviter un certain nombre de soucis potentiels.. il est fortement conseillé, pour faire les "jointure" entre les tables d'utiliser des champs "Numériques" ( des ID en gros...) .
PS2 : Je persiste .. ta structure de BDD n'est pas la meilleur....
Dis toi que dans une Base de données "relationnelle" .. chaque TABLE est sensée représenter un "OBJET"
Dans ton cas .. tu peux en imaginer 3
-Membre
-Page
-PageVue
(mais bon.. je ne vais pas te redire ce que je t'ai marqué dans ma réponse précédente)..... mais ça permet de faire les jointures facilement avec des champs numériques (voir mon ps1 ) ...
TOUTES les pages qu'il n'a pas vue ni la sienne, donc TOUTES les pages qui ne sont pas dans "pagevue" avec son ID.
ce code devrait faire l'affaire....
SELECT page FROM membre WHERE id!='$id' AND page NOT IN(SELECT page FROM pagevue WHERE idcompteclic='$id'
PS1 : A ce que je vois.. tu utilises du TEXTE pour ton champ "page" ...
Pour des raisons de performances et éviter un certain nombre de soucis potentiels.. il est fortement conseillé, pour faire les "jointure" entre les tables d'utiliser des champs "Numériques" ( des ID en gros...) .
PS2 : Je persiste .. ta structure de BDD n'est pas la meilleur....
Dis toi que dans une Base de données "relationnelle" .. chaque TABLE est sensée représenter un "OBJET"
Dans ton cas .. tu peux en imaginer 3
-Membre
-Page
-PageVue
(mais bon.. je ne vais pas te redire ce que je t'ai marqué dans ma réponse précédente)..... mais ça permet de faire les jointures facilement avec des champs numériques (voir mon ps1 ) ...
Yohann9633
Messages postés
9
Date d'inscription
mardi 3 juillet 2012
Statut
Membre
Dernière intervention
22 janvier 2015
30 nov. 2014 à 11:42
30 nov. 2014 à 11:42
Salut, merci de ta réponse en tout cas mais c'est vrai que j'ai pas été clair.
Alors je possède une table membre qui a
id, pass, email, page..
Et une table pagevue qui a : idcompteclic, page
En fait chaque membre possède une page, quand il visitera la page d'un autre membre la page qu'il aura visité sera rentré dans pagevue.
Exemple : le membre ID = 2 visite la page cocacola dans pagevue idcompteclic = 2, page = coca cola.
Et en fait dans ma page "visiter.php" j'aimerai afficher TOUTES les pages qu'il n'a pas vue ni la sienne, donc TOUTES les pages qui ne sont pas dans "pagevue" avec son ID.
Voila j'espère avoir écris un truc assez clair, c'est pas simple à expliquer.
merci :)
Alors je possède une table membre qui a
id, pass, email, page..
Et une table pagevue qui a : idcompteclic, page
En fait chaque membre possède une page, quand il visitera la page d'un autre membre la page qu'il aura visité sera rentré dans pagevue.
Exemple : le membre ID = 2 visite la page cocacola dans pagevue idcompteclic = 2, page = coca cola.
Et en fait dans ma page "visiter.php" j'aimerai afficher TOUTES les pages qu'il n'a pas vue ni la sienne, donc TOUTES les pages qui ne sont pas dans "pagevue" avec son ID.
Voila j'espère avoir écris un truc assez clair, c'est pas simple à expliquer.
merci :)
Yohann9633
Messages postés
9
Date d'inscription
mardi 3 juillet 2012
Statut
Membre
Dernière intervention
22 janvier 2015
30 nov. 2014 à 16:31
30 nov. 2014 à 16:31
up
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Yohann9633
Messages postés
9
Date d'inscription
mardi 3 juillet 2012
Statut
Membre
Dernière intervention
22 janvier 2015
1 déc. 2014 à 19:41
1 déc. 2014 à 19:41
Merci beaucoup, ouip je vais essayer de faire ce que tu m'as dis, en fait pour celà il faudrait que je trouve une API pour récupérer l'ID de la page facebook à la place du nom . En attendant ce que tu m'as donné fonctionne très bien et je te remercie beaucoup.
Après je me pencherai sur les jointures ;)
Après je me pencherai sur les jointures ;)
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
1 déc. 2014 à 19:47
1 déc. 2014 à 19:47
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)
Cordialement,
Jordane
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)
Cordialement,
Jordane