Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/12/2011, 22h54   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 35
Points : 10
Points : 10
Par défaut récupération multiple avec une seule requète

Bonsoir à tous

J'ai une question à la quelle, je supposes, il n'y a pas de réponse. :s

On va se baser sur une requète de la forme : (exemple)
Code :
1
2
3
4
5
6
7
8
9
	SELECT `id`
	FROM `table`
	WHERE `id` IN (
		SELECT `id`
		FROM `table`
		WHERE blabla1
	)
	AND blabla2
	HAVING blabla3
je souhaiterai récupérer :
- bien évidemment le résultat de la requête globale
- le résultat de la requête interne (celle qui est dans le IN)

tout ceci pour limiter la charge de mon serveur ...

est-ce possible ? :s

ps : la requète est exécutée via php..

Merci d'avance
rebel29270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 01h17   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 653
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 653
Points : 2 655
Points : 2 655
bonjour,


vu votre requet pourquoi ne pas faire

Code :
1
2
 
SELECT * FROM TABLE WHERE blabla
car le code sera identique.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/12/2011, 02h23   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 35
Points : 10
Points : 10
cette requète est un exemple et sa forme n'est pas a remettre en cause ...
(sa version complète est beaucoup plus complexe)

merci quand même pour la proposition :s
rebel29270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 15h15   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 35
Points : 10
Points : 10
trop complexe ? :s
rebel29270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 15h49   #5
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 653
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 653
Points : 2 655
Points : 2 655
Citation:
Envoyé par rebel29270 Voir le message
cette requète est un exemple et sa forme n'est pas a remettre en cause ...
(sa version complète est beaucoup plus complexe)
Bah vu l'exemple bien sur que si que sa structure est a remettre en cause.

En plus vous utilisez la clause having sans group by ce qui est totallement incohérent (vive MySql)

Donc partez d'un exemple concret plutôt que d'un exemple édulcoré qui n'a rien de bon.

car la votre requête devrait s'écrire comme ceci :

Code :
1
2
3
 
 
SELECT des_colonnes FROM ma_table WHERE blabla1 AND blabla2 AND blabla3
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/12/2011, 16h27   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 35
Points : 10
Points : 10
pourquoi faire compliqué quand on peu faire simple ?

(je reformule en plus simple ...)

J'ai ça comme requête :
Code :
1
2
SELECT * FROM `table1`
WHERE `id` IN (SELECT `id` FROM `table2`)
je souhaiterai récupérer :
- d'une part le résultat de la requête complète (ce qui est effectué normalement)
- d'autre part le résultat de la requête
Code :
SELECT `id` FROM `table2`
tout ceci en une seule requête pour soulager le serveur ...
rebel29270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 17h25   #7
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 653
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 653
Points : 2 655
Points : 2 655
Le cas est donc différent de l'exemple de départ (pas de notion de table1 et table2)


Bein si votre but n'est de ramené que la colonne id de la table2, c'est implicitement la colonne id de la table1.

Si vous voulez ramener plus de colonne de table2 il faudra passer par une jointure interne
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/12/2011, 19h01   #8
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 35
Points : 10
Points : 10
Merci pour vos réponses,

le problème n'est plus d'actualité aujourd'hui, le possesseur du site a changé d'avis.

++
rebel29270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h08.


 
 
 
 
Partenaires

Hébergement Web