Trier en fonction de deux tables.
Yohann9633
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour
J'ai ce petit bout de code
En fait j'aimerai 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.
Merci d'avance.
J'ai ce petit bout de code
$tt=mysql_query("SELECT id FROM membre WHERE email='".$_SESSION['login']."'");
list($id)=mysql_fetch_row($tt);
$reponse = mysql_query("SELECT page FROM membre WHERE id!='$id' AND NOT EXISTS (SELECT idcompteclic FROM pagevue WHERE idcompteclic='$id') ")
En fait j'aimerai 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.
Merci d'avance.
A voir également:
- Trier en fonction de deux tables.
- Fonction si et - Guide
- Excel trier par ordre croissant chiffre - Guide
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
5 réponses
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'
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 ) ...
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 :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ;)