1. SQL / Говнокод #6315

    −856

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    ALTER   PROCEDURE Estimate  @Goods_ID int ,@Workshop_ID int AS
    
    SELECT 9, null, null,  'Арматура',null, null ,  null,  null
    Union
    SELECT     8, dbo.Charges.FK_TypeCh, dbo.Charges.ID, '       '+dbo.Charges.NAME, dbo.Charge_Price.KBO,   
    	             dbo.Charges.Cost, Round(dbo.Charges.Cost*dbo.Charge_Price.KBO,1), 
    		Round( dbo.Charges.Cost*dbo.Charge_Price.KBO/ dbo.Goods.volume,1)
    FROM         dbo.Charge_Price INNER JOIN
                          dbo.Charges ON dbo.Charge_Price.FK_Charge = dbo.Charges.ID INNER JOIN
                          dbo.Workshop ON dbo.Charge_Price.FK_Workshop = dbo.Workshop.ID INNER JOIN
    	        dbo.Goods ON dbo.Charge_Price.FK_Goods= dbo.Goods.ID	
    WHERE     (dbo.Charge_Price.FK_Workshop = 6) AND (dbo.Charge_Price.FK_Goods = @Goods_ID)
    Union
    SELECT     7, null, null,'         Всего  по арматуре', null,   null,Round( SUM( dbo.Charges.Cost*dbo.Charge_Price.KBO) ,1)as Сумма, 
    	Round(SUM( dbo.Charges.Cost*dbo.Charge_Price.KBO/ dbo.Goods.volume),1)
    FROM         dbo.Charge_Price INNER JOIN
    	      dbo.Charges ON dbo.Charge_Price.FK_Charge = dbo.Charges.ID INNER JOIN
                        dbo.Workshop ON dbo.Charge_Price.FK_Workshop = dbo.Workshop.ID INNER JOIN
    	        dbo.Goods ON dbo.Charge_Price.FK_Goods= dbo.Goods.ID	
    WHERE     (dbo.Charge_Price.FK_Workshop = 6) AND (dbo.Charge_Price.FK_Goods = @Goods_ID)
    Union
    /*
      Ещё мурнадцать запросов с объединением
    */
    UNION
    SELECT     -3,  null, null,'         Полная себестоимость',   null, null, Round(SUM( dbo.Charges.Cost*dbo.Charge_Price.KBO)*1.05,1) as Сумма, 
    	Round(SUM( dbo.Charges.Cost*dbo.Charge_Price.KBO/ dbo.Goods.volume)*1.05,1)
    FROM         dbo.Charge_Price INNER JOIN
    	      dbo.Charges ON dbo.Charge_Price.FK_Charge = dbo.Charges.ID INNER JOIN
                        dbo.Workshop ON dbo.Charge_Price.FK_Workshop = dbo.Workshop.ID INNER JOIN
    	        dbo.Goods ON dbo.Charge_Price.FK_Goods= dbo.Goods.ID	
    WHERE    ( (dbo.Charge_Price.FK_Workshop = @Workshop_ID)  OR  (dbo.Charge_Price.FK_Workshop = 6)   OR
    		 (dbo.Charge_Price.FK_Workshop = 7) )AND (dbo.Charge_Price.FK_Goods = @Goods_ID) 
    UNION 
    SELECT     -4,  null, null,'         Плановые накопления',   null, null, Round(SUM( dbo.Charges.Cost*dbo.Charge_Price.KBO)*0.1575,1) as Сумма, 
    	Round(SUM( dbo.Charges.Cost*dbo.Charge_Price.KBO/ dbo.Goods.volume)*0,1575,1)
    FROM         dbo.Charge_Price INNER JOIN
    	      dbo.Charges ON dbo.Charge_Price.FK_Charge = dbo.Charges.ID INNER JOIN
                        dbo.Workshop ON dbo.Charge_Price.FK_Workshop = dbo.Workshop.ID INNER JOIN
    	        dbo.Goods ON dbo.Charge_Price.FK_Goods= dbo.Goods.ID	
    WHERE    ( (dbo.Charge_Price.FK_Workshop = @Workshop_ID)  OR  (dbo.Charge_Price.FK_Workshop = 6)   OR
    		 (dbo.Charge_Price.FK_Workshop = 7) )AND (dbo.Charge_Price.FK_Goods = @Goods_ID) 
    UNION
    SELECT     -5,  null, null,'         Цена оптовая',   null, null, Round(SUM( dbo.Charges.Cost*dbo.Charge_Price.KBO)*1.2075,1) as Сумма, 
    	Round(SUM( dbo.Charges.Cost*dbo.Charge_Price.KBO/ dbo.Goods.volume)*1,2075,1)
    FROM         dbo.Charge_Price INNER JOIN
    	      dbo.Charges ON dbo.Charge_Price.FK_Charge = dbo.Charges.ID INNER JOIN
                        dbo.Workshop ON dbo.Charge_Price.FK_Workshop = dbo.Workshop.ID INNER JOIN
    	        dbo.Goods ON dbo.Charge_Price.FK_Goods= dbo.Goods.ID	
    WHERE    ( (dbo.Charge_Price.FK_Workshop = @Workshop_ID)  OR  (dbo.Charge_Price.FK_Workshop = 6)   OR
    		 (dbo.Charge_Price.FK_Workshop = 7) )AND (dbo.Charge_Price.FK_Goods = @Goods_ID) 
    
    Order by 1 desc, 2, 3

    Формирование какой то сметы в стле 1С

    Запостил: dens, 12 Апреля 2011

    Комментарии (8) RSS

    • > ' Плановые накопления'
      Доставило.
      Ответить
    • > мурнадцать
      записал, пригодится
      Ответить
    • знаю народ который такое пишет, знаю почему так пишут: с утра надо все исправить, что бы бугалтерия в 10:00 могла начать работу. да и плата как правило почасовая у консультантов - быстрее сделаешь, довольней клиент.

      если осмысленное нечто писать, применять правильный дизайн, то потом что бы что-то добавить или изменить нужно пропорциональное время для редизайна. часто вставить больше памяти в сервак намного дешевле, что бы все тупые запросы (как например сверху) работали из памяти.

      с точки зрения прикладной области, говно слабое.
      Ответить
      • говно унылое, потому что через пять минут после написания невозможно понять, что этот кусок делает
        Ответить
        • как раз наоборот: людям кто знакомы со структурой базы даже думать не надо что бы понимать. и думать не надо что бы что-то менять. и если что-то меняешь для одного типа товара, другие типы товаров это не затрагивает.

          а то что это другим не понятно... так это как раз лучше! консультанта хер поменяешь!!

          ну вообщем, суровые реалии ДБ консультантов. лучше б не хаили - а учились бы, опыта набирались - как быть незаменимыми сотрудниками. ;)

          ЗЫ ну в данном конкретном случае то как раз все тривиально и понятно. магические числа скорее всего имеют смысл только в той конкретной фирме для которой это щасцьце делалось. да и как математик, я не имею привычки вникать в константы :)
          Ответить

    Добавить комментарий