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

    0

    1. 1
    Админ - уебок, хранивший пароли открытым текстом

    Чекайте свои мыла в утечках, ебланы

    aleksusklim, 26 Октября 2024

    Комментарии (0)
  2. SQL / Говнокод #29007

    −2

    1. 1
    Удалите мой аккаунт

    Удалите мой аккаунт

    aleksusklim, 25 Октября 2024

    Комментарии (0)
  3. SQL / Говнокод #28994

    0

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    CREATE PROCEDURE [dbo].[DogovorZalog_Get]
       @idZalog         AS INT                    --По какому залогу требуется вывести информацию
      ,@Result          AS SMALLINT       = 0 OUT --Результат выполнения: 1=Выполнено успешно
      ,@ErrorComm       AS NVARCHAR(2000) = N'' OUT --Текст ошибки/результата
      ,@ErrorCode       AS INT            = NULL OUT --Код ошибки
      ,@needSelect      AS BIT            = 0 --1=Будет вывод результата в select
      ,@needRaisError   AS SMALLINT       = 0  --(1=Будет вызов RaisError наружу)
      ,@needSelectInfo  AS SMALLINT       = NULL --(Делать информационный селект или нет. NULL= возьмет из @needSelect)
      ,@debug           AS BIT            = 0 --1=Вывод отладочной информации
      ,@Message         AS NVARCHAR(2000) = N'' OUT --Сообщение для пользователя
    
    AS 
    BEGIN
      SET DATEFORMAT DMY;
      SET NOCOUNT ON;
      SET @Result = 0
      SET @ErrorComm = N''
      DECLARE @ProcName       AS SYSNAME        = OBJECT_NAME(@@PROCID, DB_ID())
             ,@tranCnt        AS INT            = 0 --(уровень вложенности транзакции)
             ,@isTran         AS SMALLINT       = 0 --(1=используется транзакция)
             ,@needTran       AS SMALLINT       = 0 --(1=Будет все в транзакции)
    --=========================================
      BEGIN TRY
      SET @tranCnt = @@TRANCOUNT
      IF @tranCnt = 0 AND @needTran <> 0 SET @isTran = 1 
      IF @isTran = 1 BEGIN TRAN
      IF @needSelectInfo IS NULL SET @needSelectInfo = @needSelect
    
      --region Логирование
      SET @ExProc=CONCAT('EXEC ', @ProcName , CHAR(10),
        ' @idZalog=', CONVERT(NVARCHAR(50),@idZalog),CHAR(10),
        ',@Result=', CONVERT(NVARCHAR(50),@Result),CHAR(10),
        ',@ErrorComm=', '''', REPLACE(@ErrorComm,'''',''''''), '''',CHAR(10),
        ',@ErrorCode=', CONVERT(NVARCHAR(50),@ErrorCode),CHAR(10),
        ',@needSelect=', CONVERT(NVARCHAR(50),@needSelect),CHAR(10),
        ',@needRaisError=', CONVERT(NVARCHAR(50),@needRaisError),CHAR(10),
        ',@needSelectInfo=', CONVERT(NVARCHAR(50),@needSelectInfo),CHAR(10),
        ',@debug=', CONVERT(NVARCHAR(50),@debug),CHAR(10),
        ',@Message=', '''', REPLACE(@Message,'''',''''''), '''')
    
      --endregion Логирование
    
      SELECT TOP 1 *
      FROM dbo.Dogovor_Zalog AS DZ
        LEFT JOIN dbo.ZalogDestroy AS ZD ON DZ.idDestroy = ZD.idDestroy
      WHERE DZ.ID = @idZalog
      ORDER BY zd.keyDZ DESC
        
      SET @Result=1
      IF @isTran=1 COMMIT TRAN  
      END TRY
      BEGIN CATCH
      --region Обработчик ошибок
        SET @Result = 0
        --(описание деталей ошибки для внешнего обработчика)
        SET @ErrorComm = LEFT(N'Ошибка: ' +
            CASE WHEN @ErrorComm<>N'' THEN @ErrorComm + CHAR(10) ELSE N'' END  
            + ISNULL(N',@Message:' + CAST(@Message AS NVARCHAR(200)) + CHAR(10), N'')
            , 2000)
    
        --(описание ошибки для внутреннего обработчика)
        SET @ErrorCommInner = LEFT(
            CASE WHEN @ErrorComm<>N'' THEN @ErrorComm + CHAR(10) ELSE N'' END  
            + N'SP:'         + ISNULL(ERROR_PROCEDURE(), N'')                   + CHAR(10)
            + N',Line:'      + ISNULL(CAST(ERROR_LINE() AS NVARCHAR), N'')      + CHAR(10)
            + N',Severity:'  + ISNULL(CAST(ERROR_SEVERITY() AS NVARCHAR), N'')  + CHAR(10)
            + N',Error:'     + ISNULL(CAST(ERROR_NUMBER() AS NVARCHAR), N'')    + CHAR(10)
            + N',Message:'   + ISNULL(ERROR_MESSAGE(), N'')                     + CHAR(10)
            + N',State:'     + ISNULL(CAST(ERROR_STATE() AS NVARCHAR), N'')     + CHAR(10)
            + ISNULL(N','    + @ErrorCommInner, N'') + N';', 2000)
        PRINT @ErrorCommInner 
        
        IF @isTran = 1
          BEGIN
            /*IF XACT_STATE()=-1*/ ROLLBACK TRAN
          /*IF XACT_STATE()=1  COMMIT TRAN*/
          END
    
        IF @needRaisError <> 0
        BEGIN
          DECLARE @ErrorSeverityOut INT     = ERROR_SEVERITY()
                 ,@ErrorStateOut    TINYINT = ERROR_STATE();
    
          THROW 50000, @ErrorComm, 1
        END
      --endregion Обработчик ошибок
      END CATCH
    mEx:
      IF @needSelect <> 0
      BEGIN
        IF @needSelectInfo <> 0
          SELECT @Result AS 'Res'
                ,@ErrorComm AS 'ResTxt'
                ,@ErrorCode AS 'ErrorCode'
                ,@Message AS 'Message'
                ,@ErrorSeverity AS 'Severity'
    
      END
      RETURN
    END

    200 строк кода на одну выборку с одним джоином

    kredis31, 03 Октября 2024

    Комментарии (4)
  4. SQL / Говнокод #28896

    0

    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
    Новогодний оффтоп #4
    ░░░░░░░░░░░░░░░░░▐▌░░░░░░░░░░░░░░░░░
    ░░░░░░░░░░░░░░░▀████▀░░░░░░░░░░░░░░░
    ░░░░░░░░░░░░░░░▄█▀▀█▄░░░░░░░░░░░░░░░
    ░░░░░░░░░░░░░░░░░▄▄░░░░░░░░░░░░░░░░░
    ░░░░░░░░░░░░░░░▄████▄░░░░░░░░░░░░░░░
    ░░░░░░░░░░░▄▄██╬██╬████▄▄░░░░░░░░░░░
    ░░░░░░░░▀███████╬███╬██████▀░░░░░░░░
    ░░░░░░░░░░▄▄█╬████╬█████▄▄░░░░░░░░░░
    ░░░░▄▄▄▄██╬████╬█████╬███╬██▄▄▄▄░░░░
    ░░░░░░▀▀████╬█████╬█████████▀▀░░░░░░
    ░░░░░░░░░▄█████╬██████╬███▄░░░░░░░░░
    ░░▄▄▄▄██████╬█████╬███████╬███▄▄▄▄░░
    ░░▀▀▀████╬█████╬████╬███╬██████▀▀▀░░
    ░░░░░░░░████╬████████╬██████░░░░░░░░
    ░░▄▄▄█████╬██████╬█████╬███╬███▄▄▄░░
    ▀▀▀████╬█████╬█████╬████╬███╬████▀▀▀
    ░░░░░░▀▀▀██████████████████▀▀▀░░░░░░
    ░░░░░░░░░░░░░░░░████░░░░░░░░░░░░░░░░
    ░░░░░░░░░░░░░░░░████░░░░░░░░░░░░░░░░

    #1: https://govnokod.ru/27188 https://govnokod.xyz/_27188
    #2: https://govnokod.ru/27893 https://govnokod.xyz/_27893
    #2: https://govnokod.ru/28484 https://govnokod.xyz/_28484

    Milochocientos, 01 Января 2024

    Комментарии (71)
  5. SQL / Говнокод #28804

    0

    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
    SELECT last_name,
    
           o.product,
    
           p.price,
    
           c.category
    
    FROM orders o
    
    JOIN prices p ON p.product = o.product
    
    JOIN category c ON p.price >= c.limit_1 AND p.price < c.limit_2

    Сикель-обоссилий.

    JloJle4Ka, 24 Июня 2023

    Комментарии (32)
  6. SQL / Говнокод #28606

    −5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    VALUE1 in (
    	   (extract(year from '2023-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date,
    	   (extract(year from '2022-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date, 
    	   (extract(year from '2021-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date,
    	   (extract(year from '2020-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date,
    	   (extract(year from '2019-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date, 
    	   (extract(year from '2018-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date
    	  )

    когда нужно ЗАХАРДКОДИТЬ дату

    Was666, 17 Февраля 2023

    Комментарии (2)
  7. SQL / Говнокод #28594

    −3

    1. 1
    ТОРПЕДО ВПЕРДЕ

    )

    solntse_v_zenite, 09 Февраля 2023

    Комментарии (0)
  8. SQL / Говнокод #28593

    −2

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    SELECT
    DISTINCT customer_contracts_ref._Description						AS Номер_договора,
    
    CAST(dateadd(year, -2000, customer_contracts_ref._Fld418) as date)	AS Дата_договора,
    
    TSBO_ref._Description											AS ЦБО,
    
    trade_for_service._Number										AS Номер_сделки,
    
    CAST(dateadd(year, -2000, customer_contracts_ref._Fld419) as date)	AS Дата_сделки,
    
    service_ref._Description											AS Вид_услуги,
    
    ISNULL(trade_for_service._Fld7941, 0)	AS Сумма_сделки,
    
    ISNULL(STUFF(
    	(SELECT ', ', _Number as [text()]
    	FROM MTCKCenter.dbo._Document129	implementation_service_2
    	WHERE implementation_service._Fld2613RRef = implementation_service_2._Fld2613RRef
    	FOR XML PATH ('')), 1, 1, ''), 'ОТСУТСТВУЕТ')																		AS Номер_реализации,
    
    ISNULL(STUFF(	
    	(SELECT ', ',CAST(dateadd(year, -2000, trade_for_service._Fld16346) as date) as [text()]
    	FROM MTCKCenter.dbo._Document129		implementation_service_2
    	WHERE implementation_service._Fld2613RRef = implementation_service_2._Fld2613RRef
    	FOR XML PATH ('')), 1, 1, ''), '-')																					AS Дата_реализации,
    
    CAST(customer_ref._Description as varchar(50))			AS Контрагент,
    
    CASE trade_for_service._Fld9233
    	WHEN 0
    		THEN 'нет'
    	ELSE 'да'
    		END																									AS УТП_сделка,
    
    CASE implementation_service._Fld8224
    	WHEN 0
    		THEN 'да'
    	ELSE 'нет'
    		END																				AS УТП_реализация,
    
    CASE
    	WHEN implementation_service._Fld8224 = 0
    		THEN SUM(ISNULL(CAST(implementation_service._Fld2632 as money), 0)) 
    	ELSE '-'
    		END																				AS Сумма_УТП,
    	
    ISNULL(shopping._Fld1772,0)																	AS Сумма_оплаты_плюс,
    
    FROM
    MTCKCenter.dbo._Document7939		trade_for_service
    
    JOIN MTCKCenter.dbo._Reference29	  customer_contracts_ref
    ON trade_for_service._Fld7945RRef =   customer_contracts_ref._IDRRef
    
    JOIN MTCKCenter.dbo._Reference90	  service_ref
    ON trade_for_service._Fld7942RRef =   service_ref._IDRRef
    
    JOIN MTCKCenter.dbo._Reference93	  TSBO_ref
    ON trade_for_service._Fld7947RRef =   TSBO_ref._IDRRef
    
    LEFT JOIN MTCKCenter.dbo._Document129 implementation_service
    ON trade_for_service._Fld7945RRef =   implementation_service._Fld2613RRef
    
    JOIN MTCKCenter.dbo._Reference44	  customer_ref
    ON trade_for_service._Fld7944RRef =   customer_ref._IDRRef
    
    LEFT JOIN MTCKCenter.dbo._Document115	  shopping
    ON trade_for_service._Fld7945RRef =   shopping._Fld1749RRef
    
    LEFT JOIN MTCKCenter.dbo._Document104_VT1460 corrections1
    ON trade_for_service._Fld7945RRef =	corrections1._Fld1463RRef
    
    LEFT JOIN MTCKCenter.dbo._Document104_VT1476 corrections2
    ON trade_for_service._Fld7945RRef = corrections2._Fld1479RRef
    
    LEFT JOIN MTCKCenter.dbo._Document98  refunds
    ON trade_for_service._Fld7944RRef =   refunds._Fld1199RRef
    
    LEFT JOIN MTCKCenter.dbo._Document133_VT2880 write_off_to_
    ON trade_for_service._Fld7945RRef = write_off_to_._Fld5602_RRRef
    
    WHERE
    	(_Fld7942RRef=0x9C8F02DA550767D34576572C765E712A -- уменьшение стоимости авто
    OR	 _Fld7942RRef=0xB999001DD8B71C2811EA5143E3D901D3) -- доплата за а/м
    
    AND	service_ref._Marked = 0x00
    AND trade_for_service._Posted = 0x01
    
    GROUP BY customer_contracts_ref._Description, trade_for_service._Posted,
    customer_contracts_ref._Fld418, customer_contracts_ref._Fld419,
    TSBO_ref._Description, service_ref._Description,
    shopping._Fld1772, trade_for_service._Fld7941,
    implementation_service._Fld2613RRef,
    trade_for_service._Fld16346, customer_ref._Description,
    trade_for_service._Fld9233, implementation_service._Fld8224,
    implementation_service._Fld2632, trade_for_service._Fld8413,
    corrections1._Fld8389, corrections2._Fld8390,
    refunds._Fld1221, write_off_to_._Fld2887,
    write_off_to_._Fld2888, trade_for_service._Number

    Здравия всем желающим понюхать эту реальную кучу!
    Есть БД, в которую данные заносились на похуй абсолютно.

    Пример:

    Номер_договора | Номер_сделки | Номер_реализации | Сумма_залупа | Сумма_кастюма | Сумма_второй_палочки_твикс |....|...|...|...|...|
    а б в 300 3414 123424
    а б в 300 3414 123424
    г д е 134 154 17
    г д ж 213 3903 125627
    г д ж 213 13.151123151 125627

    !ЗАДАЧА!

    Надо выгрузить таблицу, в которой будут
    1. ДИСТИНКТ номер_договора, дата_договора,
    2. ДИСТИНКТ номер_сделки, дата_сделки (1 договор = 1 сделка),
    3. ЧЕРЕЗ ЗАПЯТУЮ В 1ой ЯЧЕЙКЕ номер_реализации, дата_реализации (в одной сделке их может быть больше 1),
    4. Запилить оконную функцию, кейс, или че нахуй угодно(я месяц работаю, до этого тыкал сиквел в вузе тока,
    поэтому возможно просто не вижу более адекватное решение), которые
    будут СУММИРОВАТЬ сумму_залупу, если у нее по 1 договору несколько РАЗНЫХ значений, и другие суммы,
    или ВЫБИРАТЬ только одно значение, если они одинаковые по 1 договору.

    1, 2, 3 пункты коряво, но разобрался. Зделал)
    На 4ом жоско хочется пробить башней стену, вообще не понимаю, как это написать нормально.

    solntse_v_zenite, 09 Февраля 2023

    Комментарии (3)
  9. SQL / Говнокод #28223

    −1

    1. 1
    Доброго дня!

    Никогда не писал для баз данных, да судьба-злодейка заставила.
    Кто бы помог разобраться, м?

    Имеется таблица-справочник, с несколькими колонками. Как я могу прочитать строки из нее, как в ListView?
    Имеется код

    SELECT
    PAT.PATID,
    PAT.PATFIRSTNAME,
    PAT.PATMIDDLENAME,
    PAT.PATLASTNAME,
    PAT.PATBIRTHDATE,
    PAT.PATSEX,
    PAT.PATIDDOC,
    PAT.PATIDDOCSERIES,
    PAT.PATIDDOCNUMBER,
    PAT.PATADDRESSFACT,
    PAT.PATADDRESSFROMDOC,
    PAT.PATPHONENUM,
    PAT.PATPHOTO
    FROM
    PATLIST PAT


    но хз, правильный ли он... и хз как обращаться к элементам полей. я имею только список полей.
    Остались ли среди нас сикулянты, кодящие на Delphi+FIBPLUS?

    без этого говнеца на работу не примут. ох, горе-то какое.

    TPOJlJlb, 15 Июня 2022

    Комментарии (7)
  10. SQL / Говнокод #28161

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    -- Теперь мы можем легко получить отчёт по продажам на прошлую дату:
    
    DELIMITER ;
    BEGIN;
    CALL set_prot_snapshot_date('2018-10-09 17:23:47', NULL, -1);
    SELECT NOW() report_time, d.date, SUM(p.amount * p.price) sum
    FROM docs d
    INNER JOIN doc_pos p ON d.id = p.doc_id
    GROUP BY d.date;
    ROLLBACK;

    https://habr.com/ru/post/425769/
    Как научить MySQL заглядывать в прошлое

    ISO, 09 Мая 2022

    Комментарии (26)