[MYSQL] Pb de requête + optimisation structure table
3 messages
• Page 1 sur 1
-

Chacho - WRInaute discret

- Messages: 74
- Inscription: 16 Sep 2007
[MYSQL] Pb de requête + optimisation structure table
Bonsoir
Je suis en train de mettre en place le système de commentaires sur mon site qui utilise phpbb pour la table des membres.
J'ai donc crée une table que je vais appeler ici "commentaires" avec une structure :
id | id_video | date | user_id | contenu
Première question, je me suis inspiré de la structure des tables de phpbb et j'ai mis un champs user_id. Est-ce que ca vaut vraiment le coup de faire ainsi ou autant mettre en plus le nom de l'user ?
Si je ne mets que l'user_id, la table est plus petite mais je dois faire une requête en plus pour aller chercher le username dans la table phpbb_users alors alors qu'avec le nom directement inscris, plus besoin.
En fonction de vos réponses, je déciderai donc pour la structure.
Si rajoute le nom de l'user, pas de pb pour la requête.
Par contre si je dois aller chercher le nom de l'user, est-ce qu'il y a moyen de faire une requête imbriquée ? J'ai essayé de chercher mais je ne suis pas vraiment au point ds les requêtes imbriquées.. Qqun pour me dire si c'est possible ?
Pour rappel les tables sont commentaires et phpbb_users et l'idée est de chercher tous les commentaires avec l'id_video fourni dans la requête.
En faisant deux requêtes :
Merci
Je suis en train de mettre en place le système de commentaires sur mon site qui utilise phpbb pour la table des membres.
J'ai donc crée une table que je vais appeler ici "commentaires" avec une structure :
id | id_video | date | user_id | contenu
Première question, je me suis inspiré de la structure des tables de phpbb et j'ai mis un champs user_id. Est-ce que ca vaut vraiment le coup de faire ainsi ou autant mettre en plus le nom de l'user ?
Si je ne mets que l'user_id, la table est plus petite mais je dois faire une requête en plus pour aller chercher le username dans la table phpbb_users alors alors qu'avec le nom directement inscris, plus besoin.
En fonction de vos réponses, je déciderai donc pour la structure.
Si rajoute le nom de l'user, pas de pb pour la requête.
Par contre si je dois aller chercher le nom de l'user, est-ce qu'il y a moyen de faire une requête imbriquée ? J'ai essayé de chercher mais je ne suis pas vraiment au point ds les requêtes imbriquées.. Qqun pour me dire si c'est possible ?
Pour rappel les tables sont commentaires et phpbb_users et l'idée est de chercher tous les commentaires avec l'id_video fourni dans la requête.
En faisant deux requêtes :
- Code: Tout sélectionner
SELECT id, date, user_id , contenu FROM commentaires WHERE id_video='$id'
puis :
SELECT username FROM phpbb_users WHERE user_id ='$user_id'
Merci
- jcaron
- WRInaute accro

- Messages: 2687
- Inscription: 13 Fév 2004
Re: [MYSQL] Pb de requête + optimisation structure table
Chacho a écrit:J'ai donc crée une table que je vais appeler ici "commentaires" avec une structure :
id | id_video | date | user_id | contenu
Première question, je me suis inspiré de la structure des tables de phpbb et j'ai mis un champs user_id. Est-ce que ca vaut vraiment le coup de faire ainsi ou autant mettre en plus le nom de l'user ?
Il vaut mieux en effet garder juste le user_id, ça évite de recopier plein de données inutiles (et plus longues à manipuler), et qui surtout pourraient changer de façon indépendante (même si je ne suis pas sûr qu'on puisse changer de pseudo dans phpbb, ça pourrait devenir possible un jour). On appelle ça "normaliser", et c'est une bonne habitude à prendre.
Chacho a écrit:Par contre si je dois aller chercher le nom de l'user, est-ce qu'il y a moyen de faire une requête imbriquée ?
Non, tu as besoin de faire une jointure (mais c'est probablemlent ça que tu veux dire).
Chacho a écrit:
- Code: Tout sélectionner
SELECT id, date, user_id , contenu FROM commentaires WHERE id_video='$id'
puis :
SELECT username FROM phpbb_users WHERE user_id ='$user_id'
Jointure explicite:
SELECT c.id, c.date, c.contenu, u.username FROM commentaires c JOIN phpbb_users u ON (c.user_id = u.user_id) WHERE id_video='$id'
Jointure implicite:
SELECT c.id, c.date, c.contenu, u.username FROM commentaires c, phpbb_users u WHERE c.user_id = u.user_id AND id_video='$id'
Aussi, n'oublie pas de nettoyer/vérifier/escaper $id pour éviter une injection de code SQL.
Jacques.
-

Chacho - WRInaute discret

- Messages: 74
- Inscription: 16 Sep 2007
Merci jcaron
Ok pour la structure des tables
et OK pour la requête, les deux sont toutes les deux aussi efficaces ou il y en a une de meilleure ?
En implémentant ceci, je me dis que si j'efface une utilisateur de la table php_users, la requete ne va plus aboutir... Est-ce qu'il y a un moyen de retourner un résultat même si le user_id n'existe plus dans cette table ?
Ok pour la structure des tables
et OK pour la requête, les deux sont toutes les deux aussi efficaces ou il y en a une de meilleure ?
En implémentant ceci, je me dis que si j'efface une utilisateur de la table php_users, la requete ne va plus aboutir... Est-ce qu'il y a un moyen de retourner un résultat même si le user_id n'existe plus dans cette table ?
3 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- [mysql] trier les résultats d'une requête selon une table non liée à la requête
- PHP MySql copy table à table [RESOLU]
- Structure de table pour statistique
- Optimisation de la structure des URLs
- Structure et optimisation url (repertoire ou pas)
- requete top10 d'une table
- SQL Requete multi table
- Requete sur 2 table en PHP
- UPDATE TABLE MYSQL !
- table mysql : category
Consultez la description détaillée des produits ou services de Google suivants : Google SiteLinks
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
