Optimisation de requetes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Optimisation de requetes

par Shrell » 26 déc. 2005, 16:01

nan je me suis mal exprimé, y'a un nombre assez élevé de secteurs (une vingtaine en tout je crois) et parmi ces 20 ils en choisissent 3, pareil pour les types... donc je vois pas trop comment faire ça autrement que comme je le fais maintenant

par fab » 26 déc. 2005, 15:48

bah tu fais un champ secteur avec comme value 1 , 2 ou 3

par Shrell » 26 déc. 2005, 15:11

bah oui mais le client effectue une recherche, et je lui laisse le choix sur 3 secteurs, je vois pas trop comment faire autrement :oops:

par pjl » 26 déc. 2005, 14:11

Salut,

tu peux te dire qu'à partir du moment où tu as plus de 2 colonnes avec le même nom ( et suivie de 1,2,3...) dans une table, c'est que ta base est mal conçue.
Pas mieux.

Quand je vois celà :

Code : Tout sélectionner

contacts : id_contact, id_type_recherche1, id_type_recherche2, id_type_recherche2, id_secteur_recherche1, id_secteur_recherche2, id_secteur_recherche3
c'est claiur qu'il y a un gros problème de conception de la base de données.

par fab » 26 déc. 2005, 02:43

oué, essaye de voir si tu peux pas simplifier ta base sql ainsi les requetes, cela risque d'allourdir un peu niveau traitement php mais normalement tu en sortiras largement gagnant

par ouckileou » 26 déc. 2005, 01:38

Salut,

tu peux te dire qu'à partir du moment où tu as plus de 2 colonnes avec le même nom ( et suivie de 1,2,3...) dans une table, c'est que ta base est mal conçue.

Alors je n'ai pas regardé en détail ce que tu souhaites faire, mais ça n'a pas l'air compliqué et pourtant te reqête est horriblement lourde...

Lorsque tu dois relier une entité (ici Contact) à plusieurs autres (ici Recherches), le schéma de la base doit être 2 tables et 1 relation entre les deux.
Et c'est dans la relation que tu auras une ligne pour chaque lien ;)

par Shrell » 24 déc. 2005, 00:11

Ca y est j'y suis arrivé... quelle galère...
Bon au cas où ça puisse aider quelqu'un, je m'en suis sorti avec des subselect, ce qui nous donne :

Code : Tout sélectionner

"SELECT contacts.*, negociateurs.nom_nego, origines.origine, (SELECT secteurs.secteur FROM contacts LEFT JOIN secteurs ON contacts.id_secteur1=secteurs.id_secteur WHERE contacts.id_contact='$id') as secteur1, (SELECT secteurs.secteur FROM contacts LEFT JOIN secteurs ON contacts.id_secteur2=secteurs.id_secteur WHERE contacts.id_contact='$id') as secteur2, (SELECT secteurs.secteur FROM contacts LEFT JOIN secteurs ON contacts.id_secteur3=secteurs.id_secteur WHERE contacts.id_contact='$id') as secteur3, (SELECT types.type FROM contacts LEFT JOIN types ON contacts.id_type1=types.id_type WHERE contacts.id_contact='$id') as type1, (SELECT types.type FROM contacts LEFT JOIN types ON contacts.id_type2=types.id_type WHERE contacts.id_contact='$id') as type2, (SELECT types.type FROM contacts LEFT JOIN types ON contacts.id_type3=types.id_type WHERE contacts.id_contact='$id') as type3 FROM contacts LEFT JOIN negociateurs ON contacts.id_negociateur=negociateurs.id_negociateur LEFT JOIN origines ON contacts.id_origine=origines.id_origine WHERE contacts.id_contact='$id'"
wala :D

Optimisation de requetes

par Shrell » 23 déc. 2005, 20:44

Salut tout le monde!
J'ai un petit probleme avec des requetes MySQL, je m'explique.
La structure de mes tables:

Code : Tout sélectionner

biens : id_bien, id_type, id_secteur types : id_type, type secteur : id_secteur, secteur contacts : id_contact, id_type_recherche1, id_type_recherche2, id_type_recherche2, id_secteur_recherche1, id_secteur_recherche2, id_secteur_recherche3
Quand j'affiche mes contacts, pour afficher les recherches pour l'instant je fais six requetes qui vont chercher les correspondances de chaque id.
J'aimerais savoir si je peux, en une seule requete, récupérer les correspondances pour chaque recherche.
J'espère que je m'explique bien :oops:
Merci d'avance :D