Utiliser le résultat d'une requête dans cette même requête

Utiliser le résultat d'une requête dans cette même requête - SQL/NoSQL - Programmation

Marsh Posté le 24-04-2016 à 22:00:55    

Bonjour,
j'ai une requête avec deux jointures. L'une de ces jointures doit pouvoir se faire sur une table dont je ne connais pas le nom à l'avance, le nom de cette table étant dans un champ d'un autre table jointe dans la même requête. Voici un exemple pour mieux comprendre.
 

Code :
  1. SELECT m.nametable, q.*
  2. FROM images AS i
  3. INNER JOIN metas AS m ON i.id = m.idref
  4. INNER JOIN "le contenu du champ m.nametable qui est le nom d'une table" AS q ON i.id = q.idref
  5. WHERE i.id = 1


 
J'ai ma table images à laquelle je joins ma table metas. Dans cette table metas, il y a un champ nommé nametable qui contient le nom de la table sur laquelle je souhaite faire une deuxième jointure avec mon deuxième INNER JOIN.
 
Est-ce possible de faire une telle requête, utiliser le contenu d'un champ en cours de récupération et l'intégrer à la requête ?
 
Merci !
Maxime

Reply

Marsh Posté le 24-04-2016 à 22:00:55   

Reply

Marsh Posté le 24-04-2016 à 23:27:06    

Directement, non.
 
Cependant tu peux le faire avec une procédure stockée. Tu utilises quel sgbd ? Tu peux utiliser un langage de programmation (php. Asp, java...?)

Reply

Marsh Posté le 24-04-2016 à 23:35:13    

J'utilise PostgreSQL avec PHP.
Je vais me renseigner à propos des procédures stockées. C'est quelque chose que je ne connais pas.
Merci pour cette première piste de recherche.

Reply

Marsh Posté le 25-04-2016 à 08:58:49    

Ca fait trop longtemps que je n'ai plus travaillé avec PostegreSQL.
Le plus simple pour toi c'est de faire deux requêtes en PHP. La première qui récupère le nom de la table et qui l'enregistre dans une variable PHP, et la deuxième qui fait ta requête finale en construisant ta requête avec la variable.

Reply

Marsh Posté le 25-04-2016 à 23:35:38    

Je regarde un peu les procédures stockées. J'ai l'impression que ce sont des sortes de fonctions SQL enregistrées dans la base de données, qu'on appelle quand on veut et où on veut.
Mais je vois pas comment je pourrais utiliser ces procédures dans mon cas. Je vais faire deux requêtes, ça sera bien plus simple.

Reply

Marsh Posté le 26-04-2016 à 08:59:39    

Une procédure stockée permet de réaliser un ensemble d'opérations, y compris une succession de requêtes. Ce qui fait que côté PHP tu ne fera qu'un seul appel et c'est ton SGBD qui se chargera du boulot de calcul.
Une procédure stockée renvoie un ou plusieurs résultats (resultset)  
Une fonction stockée renvoie une valeur


Message édité par antac le 26-04-2016 à 09:00:41
Reply

Sujets relatifs:

Leave a Replay

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