les jointures mysql

les jointures mysql - SQL/NoSQL - Programmation

Marsh Posté le 28-04-2007 à 23:47:32    

Amis du soir bonsoir,  :jap:  
 
voilà j'ai terminé mon website en local, bientôt le ndd+hosting et c'est partit  :D  
Et je me proposerai bien d'y ajouter un module de commentaires pour couronner le tout.
 
Sauf que je ne sais absolument pas comment organiser mes tables.
 
Pour info:
mon site c'est une simple gallerie photo/vidéo. Mon site gallerie est en fait composé de plusieurs catégories, leur noms--> ebo, tin, bj, etc. Avec pour chacuns une table bien distincte --> thumbs_tab_ebo, thumbs_tab_tin, thumbs_tab_bj, etc. Et ces tables ont exactement la même organisation, leurs champs --> id, img, lien_telech.
 
Comment je vais me débrouiller pour creer ce module de commentaires?  :??:  
Dois-je créer pour chacuns une nouvelle table du genre --> comms_tab_ebo, comms_tab_tin, etc, puis faire des jointures? où y'a-t-il une possibilité de faire une seule table?
 
en fait c'est pour éviter de refaire la même erreur que pour mes thumbs_tab_categorie car comme vous le remarquez elles ont les mêmes champs alors que j'aurai pu les regrouper, comme MagicBuzz l'avait souligné  :lol:  
Mais bon, moi et mysql  :whistle:  
 
Voilà donc je suppose que c'est la notion de jointures qui intervient ici mais j'ai besoin d'une idée de requête sql pour l'ajout d'un commentaire et pour l'affichage/selection des commentaires.  :(  
pour le php ça ira je suis un peu plus à l'aise.
 
Merci à vous

Reply

Marsh Posté le 28-04-2007 à 23:47:32   

Reply

Marsh Posté le 29-04-2007 à 00:05:14    

arrete de faire des conneries :D
 
utilise une seule table de comm'z :love:
 
et met un champs catégorie avec ebo, tin, etc...
 
 
je vois pas en quoi un join t'aiderai dans ta démarche.
 
dans tous les cas, une démarche d'analyse des besoins puis la modélisation des tables nécéssaire avant le dev de ton projet est nécéssaire, pour éviter les problemes suscités ;)


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 29-04-2007 à 00:15:36    

yes, d'ailleurs là je m'ennuie je suis en train de faire comme Mr.MagicBuzz me l'a si bien conseillé: je crée un champ "cat" qui contient soit "bj" soit "tin" soit "ebo" etc.  :jap:  
en 30min j'espère pouvoir remanier le code php, parce que swaper les autres tables dans cette dernière ça a été chiant.  :fou:  
 
 
au lieu de faire ton l33tz0r donne moi une idée de code exemple en rapport avec ma table pour "comment on fait un joint"  [:aras qui rit]  


---------------
intralase surgery [:cerveau love]
Reply

Marsh Posté le 29-04-2007 à 00:20:48    

je fais pas mon l33tz0r et je suis loin d'entre un
 
tu veux quoi exactement ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 29-04-2007 à 00:25:41    

SELECT thumbs.img, comments.text FROM thumbs LEFT JOIN comments ON thumbs.id = comments.id
 
un truc du genre ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 29-04-2007 à 00:38:07    

oui t'as compris ce que je cherche à faire mais moi lapin comprite là.  :pt1cable:  
 
bon ça y'est ce fut pas si long finalement, je m'en félicite, j'ai regroupé les tab. MagicBuzz m'avait assuré que "le tps d'exec des requetes [acroierait] de façon exponentielle" en faisant ainsi.
sauf que j'ai un peu peur là, mes requetes au lieu de ressembler à:

Code :
  1. SELECT * FROM thumbs_tab_"$cat" ORDER BY etc


 
elles ressemblent desormais à:

Code :
  1. SELECT * FROM thumbs_tab WHERE cat="$cat" ORDER BY etc


 
qu'est-ce qu'il y a d'exceptionnel? et, PIRE, maintenant ma table thumbs_tab fait la taille de la table thumbs_tab_ebo + thumbs_tab_tin + thumbs_tab_bj +  etc réunis [:totoz]
 
 
mais les requetes vont ramer pour piocher avec le WHERE cat=$cat [:totoz]


---------------
intralase surgery [:cerveau love]
Reply

Marsh Posté le 29-04-2007 à 00:46:11    

non pas du tout !
 
une relative grande table sur laquelle tu execute une requete avec une restriction d'environ 1/4 (4 catégorie, on va dire vite fait une équivalence d'enregistrements par catégorie), c'est beaucoup plus rapide qu'une union entre 4 select sur de petites tables.
 
 
 
il arrive qu'il y ait peu de résultats a chercher sur une grande trable (énorme même) dans ce cas un index peut etre utile :)
 


Message édité par zecrazytux le 29-04-2007 à 00:47:25

---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 29-04-2007 à 01:04:25    

sauf que là nous parlons bien du moteur de recherche, pour lequel j'avais ouvert un topic. Sur ce cas précis on est d'accord, les UNION =  pas top. :/
sauf que sur le site lui même ça marchait aussi comme ça --> sur la page d'acceuil j'avais:
 
SELECT * FROM thumbs_tab_"$cat" ORDER BY etc
 
donc là c'est parfait vu qu'il cherche sur une table très précise avec beaucoup moins d'entrées.
 
or depuis 30 minutes ça marche ainsi:
SELECT * FROM thumbs_tab WHERE cat="$cat" ORDER BY etc
 
donc non seulement il ouvre une énorme table (elle contient 400 petites entrées en ce moment, et n'en attend pas moins de 6000 bientôt :/) mais en plus il doit cherche la cat [:totoz]
 
Je me demande si j'ai pas perdu mon temps? heureusement j'ai fais un backup de l'ancienne database et fichiers avant de modif. j'y reviens dessus où je laisse ainsi, ça me paraît bizarre finalement ce que m'a avancé MagicBuzz (mais je suis d'accord pour ce qui concerne mon moteur de recherche et uniquement mon moteur de recherche. pour ce dernier c'est effectivement plus interessant, mais pour le reste?)
 
 
Bref, c'est pas le but. comment je fais pour mes jointures?  [:aras qui rit]


---------------
intralase surgery [:cerveau love]
Reply

Marsh Posté le 29-04-2007 à 01:08:52    

j'ai une idée je vais benchmarker mes 2 scripts, l'un avec thumb_tab_$cat (que j'ai gardé au lieu de supprimé, ouf), et ce que je viens de faire suite à vos conseilles: thumbs_tab WHERE cat=$cat  
[:million dollar baby]
 
microtime() devrait m'y aider.


---------------
intralase surgery [:cerveau love]
Reply

Marsh Posté le 29-04-2007 à 01:24:04    

verdict:
thumb_tab_$cat :
page d'accueil --> 0.02964s, 0.0317s, 0.03097s, 0.02861s, 0.02928s, 0.02501s (moyenne=0,029201 sec)
moteur recherche --> 0.01994s, 0.01055s, 0.00969s (moyenne=0,013393)
 
thumb_tab WHERE cat=$cat :
page d'accueil --> 0.01903s, 0.02127s, 0.0194s, 0.02563s, 0.0157s, 0.01901s (moyenne=0,020006 sec)
moteur recherche --> 0.00874s, 0.00928s, 0.00974s (moyenne=0,009253 sec)
 
 
 
bon, y'a pas photo alors, MagicBuzz t'es un roi,
 
thumb_tab WHERE cat=$cat VS thumb_tab_$cat --> thumb_tab WHERE cat=$cat WINS  :hello:  
 
 
et sinon mes jointures? :miam:
 


---------------
intralase surgery [:cerveau love]
Reply

Marsh Posté le 29-04-2007 à 01:24:04   

Reply

Marsh Posté le 29-04-2007 à 01:26:47    

ben oui on t'as dis qu'un where sur une grosse table pose pas de soucie.
 
tes jointures, cad ?
tu peux expliciter ? :)


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 29-04-2007 à 01:46:16    

bah je fais quoi en gros?  :(  
genre je fais une nouvelle table --> je l'appelle comms, je lui fous 2 champs : id (auto_increment) et commentaire(varchar 1000?)
 
 
et ensuite, ça se passe comment pour faire "comprendre" à mysql que tel commentaire correspond à tel photo de la gallerie?
 
exemple:
 


TABLE COMMS:
 
id   |  commentaires
-----------------------------------------
1    | kikoo lol trop khool mdr ta photo
-----------------------------------------
2    | zomg ur a total n44p at mysql lol
-----------------------------------------
3    | prout haha! pwned!
-----------------------------------------
4    | etc
-----------------------------------------


 


TABLE THUMBS_TAB
 
id   |  cat  | img                  | telech                              |
----------------------------------------------------------
1    | ebo   | ./image/lol.jpg      | ./image/lol_hi-resolution.jpg
----------------------------------------------------------
2    | tin   | ./image/lol2.jpg     | ./image/lol2_hi-resolution.jpg
----------------------------------------------------------
3    | ebo   | ./image/lol3.jpg     | ./image/lol3_hi-resolution.jpg
----------------------------------------------------------
4    | ebo   | etc                  | etc
 


 
 
comment faire pour faire savoir que le commentaire id n°1 correspond à  l'image id n°4, etc  :pt1cable:  
je suppose qu'il faut bien entendu ajouter un champ en commun (par exemple img on le duplique dans la table comms) pour satisfaire au principe des jointures... et après? ma requêtes elle ressemble à quoi pour récupérer le commentaire adéquate selon la page ouverte par le visiteur?  :??:

Message cité 1 fois
Message édité par pmusa le 29-04-2007 à 01:47:55

---------------
intralase surgery [:cerveau love]
Reply

Marsh Posté le 29-04-2007 à 02:40:12    

pmusa a écrit :

comment faire pour faire savoir que le commentaire id n°1 correspond à  l'image id n°4, etc  :pt1cable:


T'as la réponse sous les yeux là... tu rajoutes un champs dans la table des commentaires qui contiendra l'id de l'image à laquelle le commentaire est rattaché [:spamafote]

Reply

Marsh Posté le 29-04-2007 à 02:42:29    

l'id?


---------------
intralase surgery [:cerveau love]
Reply

Marsh Posté le 29-04-2007 à 02:43:11    


L'identifiant, l'index... 1,2,3,4... :sarcastic:

Reply

Marsh Posté le 29-04-2007 à 02:45:28    

euh... oui. pardon. il est 3h du mat' hein.  :D  
du coup je peux m'en sortir sans faire de jointures?  :love: (ça me fait peur les jointures de tables [:totoz])


---------------
intralase surgery [:cerveau love]
Reply

Marsh Posté le 29-04-2007 à 02:48:28    

J'ai vraiment lu en travers... mais si tu veux sélectionner les commentaires pour une image donnée, oui, ça se fait sans jointure.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed