Faire deux requetes sql différente dans une seul ?

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 : Faire deux requetes sql différente dans une seul ?

Re: Faire deux requetes sql différente dans une seul ?

par Texicitys » 06 mai 2012, 14:41

Merci pour ta réponse !

Non, je n'ai pas de contrainte de ressource, je me demandais juste si il était possible de faire deux requete totalement différente en une seule, car ça serait un gain de temps.

Re: Faire deux requetes sql différente dans une seul ?

par nhachet » 06 mai 2012, 11:46

Bonjour,

si tu as des contraintes de performances, privilégie la mise en cache. Peut-être ta table "reseaux" est-elle suffisamment petite pour être stockée en cache mémoire (type APC ou memcache).

Re: Faire deux requetes sql différente dans une seul ?

par Texicitys » 06 mai 2012, 02:49

Bonjour,

Merci pour cette réponse !

non, non les deux requête n'en aucun rapport, c'est bien pour ça que je poste sur le forum.. Sinon, je sais très bien faire des jointures.

Je me disais juste que cela était plus rapide de demander les deux choses différente dans une seule requête, car c'est embêtant de faire 2 requêtes juste pour ça..

Mais tu me confirmes donc que la meilleur solution niveau ressource utilisée est bien de faire de requête séparée ?

Merci

Re: Faire deux requetes sql différente dans une seul ?

par sadeq » 05 mai 2012, 20:14

Bonjour,

Cette méthode n'est pas justifiée puisque les 2 requêtes n'ont pas de relation (du moins tel que tu le présente) et puisque tu utilise la sous-requête simplement pour déterminer un champ cela rend de la requête principale une véritable usine à gaz, car une sous-requête de champ se répète pour toutes les lignes retournées par le select principal. Cela s’aggrave par le fait d'intégrer d'autres champs du membre. Cela rend systématiquement obsolète cette méthode car tu dois intégrer autant de copies de la sous-requête qui détermine le pseudo du membre que de champs que tu souhaite encore ajouter.

La bonne méthode dans ton cas est d'exécuter 2 requêtes séparées : une pour sélectionner un réseau et l'autre doit donc être réservée à la sélection des données du membre.

Par contre, s'il y a une relation entre les 2 tables reseaux et membres, alors tu peux exécuter une seule requête puisque tu peux utiliser une jointure (JOIN) des 2 tables dans le FROM.

Faire deux requetes sql différente dans une seul ?

par Texicitys » 05 mai 2012, 18:16

Bonjours,

Dans une page, j'ai besoin de deux information totalement différente mais qui sont toutes les deux disponibles dans la même bdd.. Pour gagner en vitesse puis-je faire une seule requête pour récupérer ces deux infos ?

Par exemple pour trouver l id et le nom du réseau + le pseudo d un membre, je fait comme ça :
$query2=$bdd->prepare('SELECT rs_name, rs_id, (SELECT mem_pseudo FROM membres WHERE mem_id = :mem) AS mem_pseudo FROM reseaux 
				WHERE rs_id = : ort_id');
				$query2->execute(array(':mem'=>$mem, ': ort_id'=>$ort_id));
				$data2=$query2->fetch();
				$mem_pseudo = $data2['mem_pseudo'];
Cela prend-t- il moins de ressource que de faire 2 requête séparée ?

Et si maintenant, j'aimerais le pseudo, le mail, l'id du membre + l'id du réseau, son nom, son type.. Comment je peux procéder sans faire deux requetes ?

Est-ce tout simplement mieux de faire deux requête ?

Merci