Page 1 sur 1

Casse Tete SQL : 2 bases de donnees

Posté : 13 oct. 2018, 09:26
par Laminak
Bonjour,

je m'arrache les cheveux sur une requête. Du coup je n'arrive plus a raisonner logiquement.

un avis extérieur serais le bienvenue.

voilà la situation : 2 bases de Données : Bd1 et Bd2 (même serveur)

je récupère le nom des tables de Bd1

Bd1:

* table : toto_2018
* table : titi_lot1_2018
* table : titi_lot2_2018
* table : tutut_lot5_2018

Bd2:

* table : clients -> id - CODE - LIBELLE


exemple de table clients

id - CODE - LIBELLE
1 - toto avion
2 - titi bateau
3 - tutut voiture


l'idée étant de créer un menu evolutif en fonction des table qui s'ajoute ou se retire (nouveau marché) voir les noms qui changent.

En php je scanne Bd1 pour connaitre les noms de tables (qui peuvent évoluer).
Et je voudrais creer un menu (déroulant, radio....) en comparant nom de tables de Bd1 + LIKE "%clients.CODE% pour en extraire le libellé.

EX:
Bd1 - table : toto_2018 -> menu : avion (LIKE "%toto")
Bd1 - table : titi_lot1_2018
& table : titi_lot2_2018 -> menu : bateau (LIKE "%titi")
Bd1 - table : tutut_lot5_2018 -> menu : voiture (LIKE "%tutut")


jai ma requête pour extraire les noms de la Bd1:

(SELECT * FROM INFORMATION_SCHEMA.TABLES AS U WHERE U.TABLE_SCHEMA = "Bd1")


j'ai ma requette pour recuperer ta table clients :

(SELECT * FROM Bd2.clients AS V)

malheureusement je n'arrive pas a faire la liaison entre les 2 avec le LIKE

j'aimerais le faire via une requête SQL, car j aimerais éviter une usine a gaz en php.

C'est sans doute pas très clair mais n’hésiter pas me poser des questions même stupide si ça peut faire avancer mon problème.

merci de votre retour :D

Re: Casse Tete SQL : 2 bases de donnees

Posté : 13 oct. 2018, 14:36
par Laminak
bon,

j'ai contourner un peu le truc :

SELECT DISTINCT LEFT (TABLE_NAME,INSTR(TABLE_NAME,"_")-1) FROM INFORMATION_SCHEMA.TABLES AS U WHERE U.TABLE_SCHEMA = "Bd1"

mais toujours ouvert a des sujétions

Re: Casse Tete SQL : 2 bases de donnees

Posté : 13 oct. 2018, 14:53
par Laminak
Bon, c'est bon. après une bonne pause reprise a zéro. Je met la requête si ça peux aider quelqu'un :

SELECT DISTINCT db_generale.clients.LIBELLE FROM db_generale.clients WHERE db_generale.clients.CODE IN (SELECT DISTINCT LEFT (TABLE_NAME,INSTR(TABLE_NAME,"_")-1) FROM INFORMATION_SCHEMA.TABLES AS U WHERE U.TABLE_SCHEMA = "Bd1" )