|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre Expert
![]() ![]() |
Salut !
pour compter les lignes d'une tables avec un critère donné comme la date p.e, c'est facile de le faire : Code :
quelqu'un peut-il me guider et m'orienter ? Merci par avance.
__________________
Bon courage ou Bonne Chance (selon le contexte) |
||
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé
![]() ![]() |
Bonjour,
A votre place, je procèderais comme suit : Je créerai une table contenant 3 colonnes (nom de table, nom de colonne, valeur du paramètre): Code :
Ensuite, je créerai la procédure stockée suivante qui parcours la table et exécute une instruction SQL construite dynamiquement : Code :
__________________
Philippe. |
||||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() ![]() |
Salut Ph. B. et merci
mais reste quand même assez lourd comme process puisqu'on doit à chaque fois lui renseigner le nom de la table ! aurait-il un moyen de parcourir toutes les tables de la bdd et d'exécuter la ps pour chacune des tables puis avoir le résultat dans un fichier à la sortie ?! je sais que j'exagère mais c'est ce que je veux avoir en finalité .... merci encore et bienvenue à toute autre idée
__________________
Bon courage ou Bonne Chance (selon le contexte) |
|
|
00
|
|
|
#4 | ||
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 215 ![]() |
un début de réponse :
FAQ : Comment obtenir une liste des tables, vues et colonnes d'une base de données Firebird ? donc avec une la procédure modifiée de ph. Code :
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
||
|
|
00
|
|
|
#5 | |
|
Expert Confirmé
![]() ![]() |
Bonjour,
Citation:
Sinon, parcourir toutes les tables pourquoi pas ? Mais comment définir la colonne qui va servir de critère de filtre ? en fonction de son type ? et si il y en a plusieurs, laquelle prendre ? La valeur du filtre est-elle unique pour toutes les tables ?
__________________
Philippe. |
|
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() ![]() |
Citation:
le chemin est assez encourageant Citation:
![]() oui elle l'est espérant que je suis assez clair sur les points soulevés
__________________
Bon courage ou Bonne Chance (selon le contexte) |
||
|
|
00
|
|
|
#7 | ||
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 215 ![]() |
une jonction supplémentaire dans ce cas là avec RDB$FIELDS permettra d'obtenir (et donc de sélectionner le nom) le type de champ
RDB$FIELD_TYPE 12 ->DATE 35 ->TIMESTAMP Donc , toutes les tables qui ont une colonne date Code :
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
||
|
|
10
|
|
|
#8 | |||
|
Membre Expert
![]() ![]() |
Citation:
j'ai loupé ton poste d'avant celui-là je cours vite voir et l'adapter à ma situation merciiiiiiiiiiiiiii
__________________
Bon courage ou Bonne Chance (selon le contexte) |
|||
|
|
00
|
|
|
#9 | |||
|
Membre Expert
![]() ![]() |
Re,
je viens de faire quelques modif sur le code; très peu en réalité Code :
Citation:
2. le message parle de problème de conversion, j'ai suivis toutes les déclarations avec leur type et ça m'a l'air correct à moins que j'ai encore loupé quelque chose ou que j'ai mal compris le message d'erreur !!
__________________
Bon courage ou Bonne Chance (selon le contexte) |
|||
|
|
00
|
|
|
#10 |
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 215 ![]() |
étonnant RDB$PAGE_NUMBER ne peut venir que d'un table système !
il faudrait d'abord faire un essai de la SELECT pour voir les Colonnes et Tables retournées avant de mettre le Execute Statement . Les essais (post 4 et 7 ) que j'ai fait ne portait, bien sur , que sur la partie SELECT , sur une BDD perso, et ce avec Firebird 2.1 . Pour le peu que j'ai pu en juger elles étaient , si ce n'est optimum , correctes
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() ![]() |
Bonjour,Euh, vous êtes sur ?
![]() Je vois un nom de paramètre entrant inutilisé (et inutile) : nom_table Firebird n'est pas sensible à la casse upper est inutile pour les noms de table ou colonne par contre trim, bien que facultatif, évite de trimbaler les espaces inutiles... Mais revenons à nos moutons, je repars de la requete SQL de @SergioMaster pour trouver pour chaque table son nom et la colonne qui nous intéresse et cela donne : Code :
__________________
Philippe. |
||
|
|
00
|
|
|
#12 | |
|
Membre Expert
![]() ![]() |
Citation:
![]() bref, un vif remerciement à vous deux car je viens de tester et c'est impeccable. reste une chose si possible, afin d'améliorer la lisibilité des résultats j'ai pensé à mettre des slash à la place des "0" est-ce faisable avec un case when end ....?
__________________
Bon courage ou Bonne Chance (selon le contexte) |
|
|
|
00
|
|
|
#13 | |
|
Expert Confirmé
![]() ![]() |
Citation:
REPLACE( '1209080420', '0', '/') => '12/9/8/42/' l'aurait d'ailleurs indiqué... Et n'oubliez pas de cliquer sur
__________________
Philippe. |
|
|
|
00
|
|
|
#14 | ||
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 215 ![]() |
le seul zéro que je vois serait le 0 résultat du count , à moins qu'il y en ait dans les noms de colonnes ou de table ?
cependant j'éviterais de remplacer le 0 par un / (trop de confusion possible avec les dates) , plutôt par un '*' ou '***' De toutes façon avec le replace pour les noms et un case pour les quantités cela devrait le faire Code :
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
||
|
|
00
|
|
|
#15 | |||
|
Membre Expert
![]() ![]() |
Citation:
mais quelque chose du genre : Code :
__________________
Bon courage ou Bonne Chance (selon le contexte) |
|||
|
|
00
|
|
|
#16 | ||
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 215 ![]() |
Dans le code de la procédure stockée
je rappelle que en sortie : Nb_Lignes INTEGER ![]() il serait totalement improductif de changer nb_lignes en Varchar je suggère plutôt la syntaxe de mon dernier post pour selectionner les données de la procédure : Code :
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
||
|
|
00
|
|
|
#17 | |||||
|
Expert Confirmé
![]() ![]() |
Citation:
Si vous voulez avoir '/' plutôt que 0 dans le paramètre Nb_Lignes, il faut déjà changer son type INTEGER vers VARCHAR(10) par exemple puis rajouter dans le code avant l'instruction SUSPEND;: Code :
__________________
Philippe. |
|||||
|
|
00
|
|
|
#18 | ||
|
Membre Expert
![]() ![]() |
Bonjour !
en fin de compte j'ai opté pour un having (count(*) > 0) pour avoir les bon résultat sans me soucier du traitement du 0. seule chose qui me manque, c'est tester sur la colonne date, voici le code modifié (réellement Pour être plus clair, j'ai repassé toutes les tables, et j'ai vu qu'il y'avait d'autre champs type date, alors j'ai pensé à mettre un filtre avec les noms de champs qui m'intéressent. voici le dernier code : Code :
__________________
Bon courage ou Bonne Chance (selon le contexte) |
||
|
|
00
|
|
|
#19 | |
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 215 ![]() |
Citation:
@Just-SoftTrêve de plaisanterie - En quoi le résultat est-il incorrect ? - As-tu songé faire une trace des SQLStmt pour vérifier ? pour faire une Trace ? créer une table , basique CREATE TABLE TRACK_SQLSTMT (TEXTE VARCHAR(128)) nota , il serait bien d'y ajouter un TimeStamp Ajouter INSERT INTO TRACK_SQLSTMT VALUES (:SQLSTMT); dans la PS, après son 'initialisation'
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
|
|
|
00
|
|
|
#20 | |
|
Membre Expert
![]() ![]() |
Citation:
je ne vois pas en quoi le trace pourrait m'aider dans ce cas ?
__________________
Bon courage ou Bonne Chance (selon le contexte) |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com