cherche editeur qui formate et indent des requetes sql

cherche editeur qui formate et indent des requetes sql - SQL/NoSQL - Programmation

Marsh Posté le 18-04-2008 à 11:04:56    

salut,  
je un cherche editeur qui formate et indent des requetes sql
gratuit si possible
 

Reply

Marsh Posté le 18-04-2008 à 11:04:56   

Reply

Marsh Posté le 18-04-2008 à 11:11:25    

SquirrelSQL fait ça plutôt bien.
http://www.squirrelsql.org

Message cité 1 fois
Message édité par Elmoricq le 18-04-2008 à 11:11:51
Reply

Marsh Posté le 18-04-2008 à 12:14:10    

ta touche tablulation marche pas ?
 
d'autant que j'ai toujours vu les formateurs ne faire que de la merde à partir du moment où on imbrique des requêtes et/ou on appelle des procédures stockées (je parle pas d'une requête imbriquée dans l'appel d'une ps...)
 
le truc t'as 25 lignes de 2 caractères, en plus généralement avec une indentation foireuse (genre le where qui ne retombe pas au niveau du FROM)
 
bref... 2 minutes de tabulations et retours chariots, ça n'a jamais fait de mal, et l'avantage c'est qu'une fois indentée, t'as compris à 95% la requête.

Message cité 1 fois
Message édité par MagicBuzz le 18-04-2008 à 12:16:18
Reply

Marsh Posté le 18-04-2008 à 12:42:34    

Genre :
 
Ca, c'est ce que j'ai écrit. C'est relou, faut scroller un peu sur la droite, mais c'est lisible.

Code :
  1. SELECT
  2.  tbl.lib1 enseigne,
  3.  cli.nomtie,
  4.  SUBSTR(fac.datliv, 5, 2) mois,
  5.  decode(facp.numevo, 0, facp.numeve, facp.numevo) cde,
  6.  ROUND(SUM(f_qtedip(facp.codsoc, facp.codpro, facp.coduni, 'PAL', facp.qtecde)), 2) cpal,
  7.  SUM(DECODE(pro.codzn3, 'OS', facp.qtecde * facp.prxvdu, 0)) ctotal,
  8.  ROUND(SUM(DECODE(pro.codzn3, 'OS', f_qtedip(facp.codsoc, facp.codpro, facp.coduni, 'PAL', facp.qtecde), 0)), 2) ospal,
  9.  facp.prxuf ostotal,
  10.  DECODE(pro.codzn3, 'OS', DECODE (fct_valzod (75,  'PRO',  pro.codpro,  128 ), 'PROMO', 1, 0), 0) promo,
  11.  facp.taurem1,
  12.  facp.prxbrtfac
  13. FROM eve fac
  14. INNER JOIN lad l ON l.codsoc = fac.codsoc AND l.typtie = fac.typtie AND l.sigtie = fac.sigtie AND l.typadr = 'FAC' AND l.numadr = fac.numfil AND fac.sigtie <> '245205' AND l.sigadr <> '245205'
  15. INNER JOIN evp facp ON facp.codsoc = fac.codsoc AND facp.achvte = fac.achvte AND facp.typeve = fac.typeve AND facp.numeve = fac.numeve
  16. INNER JOIN pro ON pro.codsoc = fct_mev(fac.codsoc, 'PRO', ' ') AND pro.codpro = facp.codpro
  17. INNER JOIN tie cli ON cli.codsoc = fct_mev(fac.codsoc, 'TIE', 'CLI') AND cli.typtie = fac.typtie AND cli.sigtie = fac.sigtie
  18. INNER JOIN tbl ON tbl.codsoc = fct_mev(cli.codsoc, 'TBL', '210') AND tbl.codtbl = '210' AND tbl.cletbl = cli.codzn5
  19. WHERE fac.codsoc IN (fct_mev(?, 'EVE', ' '), fct_mev(?, 'EVE', ' ')) AND fac.achvte = 'V' AND fac.typeve = 'FAC' AND SUBSTR(fac.datliv, 0, 4) = ? AND EXISTS
  20. (
  21.  SELECT NULL
  22.  FROM evp osp
  23.  INNER JOIN pro os ON os.codsoc = fct_mev(osp.codsoc, 'PRO', ' ') AND os.codpro = osp.codpro AND os.codzn3 = 'OS' WHERE osp.codsoc = fct_mev(fac.codsoc, 'EVP', ' ') AND osp.achvte = fac.achvte AND osp.typeve = fac.typeve AND osp.numeve = fac.numeve
  24. )
  25. GROUP BY tbl.lib1, cli.nomtie, SUBSTR(fac.datliv, 5, 2), decode(facp.numevo, 0, facp.numeve, facp.numevo), DECODE (pro.codzn3, 'OS', DECODE(fct_valzod(75,  'PRO',  pro.codpro,  128 ), 'PROMO', 1, 0), 0), facp.prxuf, facp.prxbrtfac, facp.taurem1
  26. ORDER BY enseigne, nomtie, mois, cde, promo, ostotal


 
Ca, c'est ce que donne Formater Plus dans TOAD :

Code :
  1. /* Formatted on 2008/04/18 12:41 (Formatter Plus v4.8.5) */
  2. SELECT   tbl.lib1 enseigne, cli.nomtie, SUBSTR (fac.datliv, 5, 2) mois,
  3.         DECODE (facp.numevo, 0, facp.numeve, facp.numevo) cde,
  4.         ROUND (SUM (f_qtedip (facp.codsoc,
  5.                               facp.codpro,
  6.                               facp.coduni,
  7.                               'PAL',
  8.                               facp.qtecde
  9.                              )
  10.                    ),
  11.                2
  12.               ) cpal,
  13.         SUM (DECODE (pro.codzn3, 'OS', facp.qtecde * facp.prxvdu, 0)) ctotal,
  14.         ROUND (SUM (DECODE (pro.codzn3,
  15.                             'OS', f_qtedip (facp.codsoc,
  16.                                             facp.codpro,
  17.                                             facp.coduni,
  18.                                             'PAL',
  19.                                             facp.qtecde
  20.                                            ),
  21.                             0
  22.                            )
  23.                    ),
  24.                2
  25.               ) ospal,
  26.         facp.prxuf ostotal,
  27.         DECODE (pro.codzn3,
  28.                 'OS', DECODE (fct_valzod (75, 'PRO', pro.codpro, 128),
  29.                               'PROMO', 1,
  30.                               0
  31.                              ),
  32.                 0
  33.                ) promo,
  34.         facp.taurem1, facp.prxbrtfac
  35.    FROM eve fac INNER JOIN lad l ON l.codsoc = fac.codsoc
  36.                                AND l.typtie = fac.typtie
  37.                                AND l.sigtie = fac.sigtie
  38.                                AND l.typadr = 'FAC'
  39.                                AND l.numadr = fac.numfil
  40.                                AND fac.sigtie <> '245205'
  41.                                AND l.sigadr <> '245205'
  42.         INNER JOIN evp facp ON facp.codsoc = fac.codsoc
  43.                           AND facp.achvte = fac.achvte
  44.                           AND facp.typeve = fac.typeve
  45.                           AND facp.numeve = fac.numeve
  46.         INNER JOIN pro ON pro.codsoc = fct_mev (fac.codsoc, 'PRO', ' ')
  47.                      AND pro.codpro = facp.codpro
  48.         INNER JOIN tie cli ON cli.codsoc = fct_mev (fac.codsoc, 'TIE', 'CLI')
  49.                          AND cli.typtie = fac.typtie
  50.                          AND cli.sigtie = fac.sigtie
  51.         INNER JOIN tbl ON tbl.codsoc = fct_mev (cli.codsoc, 'TBL', '210')
  52.                      AND tbl.codtbl = '210'
  53.                      AND tbl.cletbl = cli.codzn5
  54.   WHERE fac.codsoc IN (fct_mev (?, 'EVE', ' '), fct_mev (?, 'EVE', ' '))
  55.     AND fac.achvte = 'V'
  56.     AND fac.typeve = 'FAC'
  57.     AND SUBSTR (fac.datliv, 0, 4) = ?
  58.     AND EXISTS (
  59.            SELECT NULL
  60.              FROM evp osp INNER JOIN pro os ON os.codsoc =
  61.                                                  fct_mev (osp.codsoc,
  62.                                                           'PRO',
  63.                                                           ' '
  64.                                                          )
  65.                                           AND os.codpro = osp.codpro
  66.                                           AND os.codzn3 = 'OS'
  67.             WHERE osp.codsoc = fct_mev (fac.codsoc, 'EVP', ' ')
  68.               AND osp.achvte = fac.achvte
  69.               AND osp.typeve = fac.typeve
  70.               AND osp.numeve = fac.numeve)
  71. GROUP BY tbl.lib1,
  72.         cli.nomtie,
  73.         SUBSTR (fac.datliv, 5, 2),
  74.         DECODE (facp.numevo, 0, facp.numeve, facp.numevo),
  75.         DECODE (pro.codzn3,
  76.                 'OS', DECODE (fct_valzod (75, 'PRO', pro.codpro, 128),
  77.                               'PROMO', 1,
  78.                               0
  79.                              ),
  80.                 0
  81.                ),
  82.         facp.prxuf,
  83.         facp.prxbrtfac,
  84.         facp.taurem1
  85. ORDER BY enseigne, nomtie, mois, cde, promo, ostotal


 
Mmm miam miam, comment c'est imbittable maintenant :love:

Message cité 1 fois
Message édité par MagicBuzz le 18-04-2008 à 12:43:18
Reply

Marsh Posté le 18-04-2008 à 13:05:40    

La version formatée de ta requête avec SquirrelSQL :

Code :
  1. SELECT
  2. tbl.lib1 enseigne,
  3. cli.nomtie,
  4. SUBSTR(fac.datliv, 5, 2) mois,
  5. decode(facp.numevo, 0, facp.numeve, facp.numevo) cde,
  6. ROUND(SUM(f_qtedip(facp.codsoc, facp.codpro, facp.coduni, 'PAL', facp.qtecde)), 2) cpal,
  7. SUM(DECODE(pro.codzn3, 'OS', facp.qtecde * facp.prxvdu, 0)) ctotal,
  8. ROUND(SUM(DECODE(pro.codzn3, 'OS', f_qtedip(facp.codsoc, facp.codpro, facp.coduni, 'PAL', facp.qtecde), 0)), 2) ospal,
  9. facp.prxuf ostotal,
  10. DECODE(pro.codzn3, 'OS', DECODE (fct_valzod (75, 'PRO', pro.codpro, 128 ), 'PROMO', 1, 0), 0) promo,
  11. facp.taurem1,
  12. facp.prxbrtfac
  13. FROM eve fac
  14. INNER JOIN lad l ON l.codsoc = fac.codsoc
  15. AND l.typtie = fac.typtie
  16. AND l.sigtie = fac.sigtie
  17. AND l.typadr = 'FAC'
  18. AND l.numadr = fac.numfil
  19. AND fac.sigtie <> '245205'
  20. AND l.sigadr <> '245205'
  21. INNER JOIN evp facp ON facp.codsoc = fac.codsoc
  22. AND facp.achvte = fac.achvte
  23. AND facp.typeve = fac.typeve
  24. AND facp.numeve = fac.numeve
  25. INNER JOIN pro ON pro.codsoc = fct_mev(fac.codsoc, 'PRO', ' ')
  26. AND pro.codpro = facp.codpro
  27. INNER JOIN tie cli ON cli.codsoc = fct_mev(fac.codsoc, 'TIE', 'CLI')
  28. AND cli.typtie = fac.typtie
  29. AND cli.sigtie = fac.sigtie
  30. INNER JOIN tbl ON tbl.codsoc = fct_mev(cli.codsoc, 'TBL', '210')
  31. AND tbl.codtbl = '210'
  32. AND tbl.cletbl = cli.codzn5
  33. WHERE fac.codsoc IN (fct_mev(?, 'EVE', ' '), fct_mev(?, 'EVE', ' '))
  34. AND fac.achvte = 'V'
  35. AND fac.typeve = 'FAC'
  36. AND SUBSTR(fac.datliv, 0, 4) = ?
  37. AND EXISTS
  38. (
  39.   SELECT
  40.   NULL
  41.   FROM evp osp
  42.   INNER JOIN pro os ON os.codsoc = fct_mev(osp.codsoc, 'PRO', ' ')
  43.   AND os.codpro = osp.codpro
  44.   AND os.codzn3 = 'OS'
  45.   WHERE osp.codsoc = fct_mev(fac.codsoc, 'EVP', ' ')
  46.   AND osp.achvte = fac.achvte
  47.   AND osp.typeve = fac.typeve
  48.   AND osp.numeve = fac.numeve
  49. )
  50. GROUP BY tbl.lib1,
  51. cli.nomtie,
  52. SUBSTR(fac.datliv, 5, 2),
  53. decode(facp.numevo, 0, facp.numeve, facp.numevo),
  54. DECODE (pro.codzn3, 'OS', DECODE(fct_valzod(75, 'PRO', pro.codpro, 128 ), 'PROMO', 1, 0), 0),
  55. facp.prxuf,
  56. facp.prxbrtfac,
  57. facp.taurem1
  58. ORDER BY enseigne, nomtie, mois, cde, promo, ostotal

Reply

Marsh Posté le 18-04-2008 à 13:43:10    

Elmoricq a écrit :

SquirrelSQL fait ça plutôt bien.
http://www.squirrelsql.org


merci  :jap:  

MagicBuzz a écrit :

ta touche tablulation marche pas ?
 
d'autant que j'ai toujours vu les formateurs ne faire que de la merde à partir du moment où on imbrique des requêtes et/ou on appelle des procédures stockées (je parle pas d'une requête imbriquée dans l'appel d'une ps...)
 
le truc t'as 25 lignes de 2 caractères, en plus généralement avec une indentation foireuse (genre le where qui ne retombe pas au niveau du FROM)
 
bref... 2 minutes de tabulations et retours chariots, ça n'a jamais fait de mal, et l'avantage c'est qu'une fois indentée, t'as compris à 95% la requête.


 

MagicBuzz a écrit :

Genre :
 
Ca, c'est ce que j'ai écrit. C'est relou, faut scroller un peu sur la droite, mais c'est lisible.
 
Mmm miam miam, comment c'est imbittable maintenant :love:


 
ça sera toujours moins imbitable qu'une requete étalée sur une ligne de log

Reply

Marsh Posté le 18-04-2008 à 13:45:51    

Elmoricq a écrit :

La version formatée de ta requête avec SquirrelSQL :

Code :
  1. SELECT
  2. tbl.lib1 enseigne,
  3. cli.nomtie,
  4. SUBSTR(fac.datliv, 5, 2) mois,
  5. decode(facp.numevo, 0, facp.numeve, facp.numevo) cde,
  6. ROUND(SUM(f_qtedip(facp.codsoc, facp.codpro, facp.coduni, 'PAL', facp.qtecde)), 2) cpal,
  7. SUM(DECODE(pro.codzn3, 'OS', facp.qtecde * facp.prxvdu, 0)) ctotal,
  8. ROUND(SUM(DECODE(pro.codzn3, 'OS', f_qtedip(facp.codsoc, facp.codpro, facp.coduni, 'PAL', facp.qtecde), 0)), 2) ospal,
  9. facp.prxuf ostotal,
  10. DECODE(pro.codzn3, 'OS', DECODE (fct_valzod (75, 'PRO', pro.codpro, 128 ), 'PROMO', 1, 0), 0) promo,
  11. facp.taurem1,
  12. facp.prxbrtfac
  13. FROM eve fac
  14. INNER JOIN lad l ON l.codsoc = fac.codsoc
  15. AND l.typtie = fac.typtie
  16. AND l.sigtie = fac.sigtie
  17. AND l.typadr = 'FAC'
  18. AND l.numadr = fac.numfil
  19. AND fac.sigtie <> '245205'
  20. AND l.sigadr <> '245205'
  21. INNER JOIN evp facp ON facp.codsoc = fac.codsoc
  22. AND facp.achvte = fac.achvte
  23. AND facp.typeve = fac.typeve
  24. AND facp.numeve = fac.numeve
  25. INNER JOIN pro ON pro.codsoc = fct_mev(fac.codsoc, 'PRO', ' ')
  26. AND pro.codpro = facp.codpro
  27. INNER JOIN tie cli ON cli.codsoc = fct_mev(fac.codsoc, 'TIE', 'CLI')
  28. AND cli.typtie = fac.typtie
  29. AND cli.sigtie = fac.sigtie
  30. INNER JOIN tbl ON tbl.codsoc = fct_mev(cli.codsoc, 'TBL', '210')
  31. AND tbl.codtbl = '210'
  32. AND tbl.cletbl = cli.codzn5
  33. WHERE fac.codsoc IN (fct_mev(?, 'EVE', ' '), fct_mev(?, 'EVE', ' '))
  34. AND fac.achvte = 'V'
  35. AND fac.typeve = 'FAC'
  36. AND SUBSTR(fac.datliv, 0, 4) = ?
  37. AND EXISTS
  38. (
  39.   SELECT
  40.   NULL
  41.   FROM evp osp
  42.   INNER JOIN pro os ON os.codsoc = fct_mev(osp.codsoc, 'PRO', ' ')
  43.   AND os.codpro = osp.codpro
  44.   AND os.codzn3 = 'OS'
  45.   WHERE osp.codsoc = fct_mev(fac.codsoc, 'EVP', ' ')
  46.   AND osp.achvte = fac.achvte
  47.   AND osp.typeve = fac.typeve
  48.   AND osp.numeve = fac.numeve
  49. )
  50. GROUP BY tbl.lib1,
  51. cli.nomtie,
  52. SUBSTR(fac.datliv, 5, 2),
  53. decode(facp.numevo, 0, facp.numeve, facp.numevo),
  54. DECODE (pro.codzn3, 'OS', DECODE(fct_valzod(75, 'PRO', pro.codpro, 128 ), 'PROMO', 1, 0), 0),
  55. facp.prxuf,
  56. facp.prxbrtfac,
  57. facp.taurem1
  58. ORDER BY enseigne, nomtie, mois, cde, promo, ostotal



mouais, là effectivement ça reste correct.
je suis pas partisant de l'éclatement des "and" dans les clauses de jointure, mais c'est juste une affaire de goût. pour le reste effectivement il donne un code lisible

Reply

Marsh Posté le 18-04-2008 à 14:49:04    

il est pas mal cet editeur, je vais le préférer a Toad je pense, il parait largement moins lourd


Message édité par pactole@ le 18-04-2008 à 15:13:00
Reply

Sujets relatifs:

Leave a Replay

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