Creer une fonction en SQL
Résolu
Theuma
Messages postés
73
Date d'inscription
Statut
Membre
Dernière intervention
-
blux Messages postés 27145 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27145 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Voila ce que j'aimerais faire ...
J'ai une grosse requette SQL qui fait pas loin de 15 lignes et je doit réaliser cette fonction 36 fois .... Je vouderais crée en VB une fonction de type
Fonction(Lettre) et il me change dans mon SQL la variable ... C'est possible ???
Voici le code en question ...
[code]SELECT Sum(A) AS AA, FK_Prefab
FROM (SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Left(Repere1,1) like 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
UNION ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,2,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,3,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,4,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,5,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,6,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,7,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Left(Repere2,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
UNION ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,2,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,3,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,4,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,5,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,6,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,7,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
)
GROUP BY FK_Prefab;
/code
La lettre A est ma variable que j'aimerais changer ....
Voila ce que j'aimerais faire ...
J'ai une grosse requette SQL qui fait pas loin de 15 lignes et je doit réaliser cette fonction 36 fois .... Je vouderais crée en VB une fonction de type
Fonction(Lettre) et il me change dans mon SQL la variable ... C'est possible ???
Voici le code en question ...
[code]SELECT Sum(A) AS AA, FK_Prefab
FROM (SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Left(Repere1,1) like 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
UNION ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,2,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,3,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,4,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,5,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,6,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere1,7,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Left(Repere2,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
UNION ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,2,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,3,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,4,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,5,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,6,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
Union ALL
SELECT Count(*) AS A, FK_Prefab FROM LignePrefab WHERE Mid(Repere2,7,1) LIKE 'A' AND FK_Prefab in (Select FK_Prefab From LignePrefab) Group BY FK_Prefab
)
GROUP BY FK_Prefab;
/code
La lettre A est ma variable que j'aimerais changer ....
A voir également:
- Creer une fonction en SQL
- Fonction si et - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer une adresse hotmail - Guide
- Créer un lien pour partager des photos - Guide
1 réponse
Salut,
une fonction ne fera pas ce genre de changement ou elle ne va pas t'avancer car tu devras l'appeler 36 fois...
C'est une requête dans du code ou en 'stand-alone' ?
Ce sera à exécuter plusieurs fois sur la base ou périodiquement ? Pourquoi 36 ?
A+ Blux
une fonction ne fera pas ce genre de changement ou elle ne va pas t'avancer car tu devras l'appeler 36 fois...
C'est une requête dans du code ou en 'stand-alone' ?
Ce sera à exécuter plusieurs fois sur la base ou périodiquement ? Pourquoi 36 ?
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"