View Categories

Utilisation SQL brut sans vérifications ni entraves

Comment exécuter un SQL valide en direct sur la base mais non accepté au travers de l’onglet Requêtes #

Problématique : exemple de SQL non supporté : #

SELECT LivraisonPays,[Chartreuse verte],[Côte de Blaye],[Guaraná Fantástica]
FROM (SELECT Demonstration.dbo.Commandes.LivraisonPays,
             Demonstration.dbo.Produits.NomProduit,
             Demonstration.dbo.Commandes_Details.Quantite
       FROM  Demonstration.dbo.Commandes
       Inner Join Demonstration.dbo.Commandes_Details 
On Demonstration.dbo.Commandes.NumCommande = Demonstration.dbo.Commandes_Details.NumCommande
       Inner Join Demonstration.dbo.Produits
On Demonstration.dbo.Produits.CodeProduit =  Demonstration.dbo.Commandes_Details.CodeProduit ) SOURCE

PIVOT (sum (Quantite)
       for NomProduit in ([Chartreuse verte],[Côte de Blaye],[Guaraná Fantástica] )) AS PVT
ORDER BY LivraisonPays

Résultat :

Dans BiBOARD :

1 – CREATION D’une requête « fantôme » 

Requête fantôme: 

Astuce : créer une requête (sur la bonne connexion, ici SQL Server) avec le même nombre de champs et de même type et de même nom.

SELECT cast(' ' as varchar(255) )as LivraisonPays,
       0 as [Chartreuse verte],
       0 as [Côte de Blaye],
       0 as [Guaraná Fantástica]

Enregistrer la requête. Fermer la requête

2 – CREATION du tableau de bord  

3 – Interventions dans le référentiel 

Modification de la colonne query_web_sql de la table query du référentiel qui contient toutes les requêtes créées au travers du studio Designer.

Principe: 

UPDATE query
SET query.query_web_sql =  'REQUETE SQL'
WHERE query.query_name = 'Nom_de_la requête';

Dans l’exemple: 

UPDATE query
SET query.query_web_sql =  'SELECT LivraisonPays,[Chartreuse verte],[Côte de Blaye],[Guaraná Fantástica]
FROM (SELECT Demonstration.dbo.Commandes.LivraisonPays,
             Demonstration.dbo.Produits.NomProduit,
             Demonstration.dbo.Commandes_Details.Quantite
         FROM  Demonstration.dbo.Commandes
      Inner Join Demonstration.dbo.Commandes_Details 
       On Demonstration.dbo.Commandes.NumCommande = Demonstration.dbo.Commandes_Details.NumCommande
      Inner Join Demonstration.dbo.Produits
       On Demonstration.dbo.Produits.CodeProduit = Demonstration.dbo.Commandes_Details.CodeProduit ) SOURCE

PIVOT (sum (Quantite)
       for NomProduit in ([Chartreuse verte],[Côte de Blaye],[Guaraná Fantástica] )) AS PVT
ORDER BY LivraisonPays'
WHERE query.query_name = 'ASTUCES_REQUETE_FANTOME';

Résultat sur le tableau de bord: 

Remarque : la requête initiale consultée dans le studio continue de fonctionner et n’a pas été modifiée ; ne pas la modifier ou l’enregistrer.

Remarque : il y a maintenant incohérence dans le référentiel entre les colonnes query_sql, query_client et la colonne query_web_sql pour la requête ainsi modifiée mais ce n’est pas bloquant.

Retour en haut