mysql_real_escape_string / Говнокод #27264 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  54. 54
SELECT sum(t4.value) as "План", STR_TO_DATE(t4.date, '%d-%m-%Y') AS "time" FROM
(SELECT  t.id, t.subject, t3.depth, t.value, 
   CASE WHEN t.field_name = "Август 2020 (план)" THEN "2020-08-01"
  WHEN t.field_name = "Август 2020 (факт)" THEN "2020-08-01"
  WHEN t.field_name = "Апрель 2020 (план)" THEN "2020-04-01"
  WHEN t.field_name = "Апрель 2020 (факт)" THEN "2020-04-01"
  WHEN t.field_name = "Декабрь 2020 (план)" THEN "2020-12-01"
  WHEN t.field_name = "Декабрь 2020 (факт)" THEN "2020-12-01"
  WHEN t.field_name = "Июль 2020 (план)" THEN "2020-07-01"
  WHEN t.field_name = "Июль 2020 (факт)" THEN "2020-07-01"
  WHEN t.field_name = "Июнь 2020 (план)" THEN "2020-06-01"
  WHEN t.field_name = "Июнь 2020 (факт)" THEN "2020-06-01"
  WHEN t.field_name = "Май 2020 (план)" THEN "2020-05-01"
  WHEN t.field_name = "Май 2020 (факт)" THEN "2020-05-01"
  WHEN t.field_name = "Март 2020 (план)" THEN "2020-03-01"
  WHEN t.field_name = "Март 2020 (факт)" THEN "2020-03-01"
  WHEN t.field_name = "Ноябрь 2020 (план)" THEN "2020-11-01"
  WHEN t.field_name = "Ноябрь 2020 (факт)" THEN "2020-11-01"
  WHEN t.field_name = "Октябрь 2020 (план)" THEN "2020-10-01"
  WHEN t.field_name = "Октябрь 2020 (факт)" THEN "2020-10-01"
  WHEN t.field_name = "Сентябрь 2020 (план)" THEN "2020-09-01"
  WHEN t.field_name = "Сентябрь 2020 (факт)" THEN "2020-09-01"
  WHEN t.field_name = "Февраль 2020 (план)" THEN "2020-02-01"
  WHEN t.field_name = "Февраль 2020 (факт)" THEN "2020-02-01"
  WHEN t.field_name = "Январь 2020 (план)" THEN "2020-01-01"
  WHEN t.field_name = "Январь 2020 (факт)" THEN "2020-01-01" end AS DATE
   FROM (
          SELECT i.id AS id, i.subject AS subject, i.updated_on as updated_on,
            cf.name AS field_name,
            cv.value AS value
          FROM issues i
        LEFT JOIN custom_values cv
            ON i.id = cv.customized_id
        LEFT JOIN custom_fields cf
            ON cv.custom_field_id=cf.id      
         WHERE cv.customized_type="Issue" and (i.project_id = 2284)) t 
   LEFT join
   (SELECT  t2.id,
  GROUP_CONCAT(DISTINCT(CASE WHEN t2.field_name = "Код бюджета" THEN t2.value else null END)) AS depth   
   FROM (
          SELECT i.id AS id, i.subject AS subject, i.updated_on as updated_on,
            cf.name AS field_name,
            cv.value AS value
          FROM issues i
        LEFT JOIN custom_values cv
            ON i.id = cv.customized_id
        LEFT JOIN custom_fields cf
            ON cv.custom_field_id=cf.id      
         WHERE cv.customized_type="Issue" and (i.project_id = 2284)) t2
   GROUP BY t2.id) t3        
   ON t.id=t3.id
   WHERE INSTR(t.field_name, "план")>0 ) t4
   WHERE substr(t4.date,1,7) in ($time)  and t4.value!=0 and t4.depth=1 and t4.subject = 'Себестоимость реализованной готовой продукции (товаров, работ, услуг)'
   group by t4.date

https://t.me/dba_ru/131122

Fike Fike, (Updated )

Комментарии (12, +12)

mysql_real_escape_string / Говнокод #27238 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
Falcon Space - это платформа для создания веб-решений с управлением через SQL. 
Все создается и управляется на SQL. 
Телеграм бот управляется полностью 1 хранимой процедурой на SQL!

https://falcon.web-automation.ru/docs/telegram-boty-i-otpravka-soobshcheniy-v-telegram

Fike Fike, (Updated )

Комментарии (4, +4)

mysql_real_escape_string / Говнокод #27158 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
declare @NL table
 (ARTICLE_ID int primary key,
  M int,
  DS datetime,
  DD datetime,
  RAS money,
  REST money,
  NWS money,
  NWA money,
  LD_AMOUNT money,
  LD_DATE datetime,
  IS_NL bit,
  SCC_ID int,
  IS_NOT_MARKDOWN bit)

Double Side,Single Density / Double Side, Double Density — это понятно. Но почему datetime?

tucvbif tucvbif, (Updated )

Комментарии (22, +22)

mysql_real_escape_string / Говнокод #27148 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
CREATE OR REPLACE FUNCTION update_last_comment_ids_on_rev_update() RETURNS trigger AS $$
    BEGIN
        UPDATE comments
        SET last_revision_id = NEW.id
        FROM comment_revisions
        WHERE comments.id_ru = NEW.comment_id
            AND comment_revisions.id = comments.last_revision_id
            AND comment_revisions.fetch_time < NEW.fetch_time;
        
        IF (NEW.source = 'XYZ') THEN
            UPDATE comments
            SET last_xyz_revision_id = NEW.id
            FROM comment_revisions
            WHERE comments.id_ru = NEW.comment_id
                AND comment_revisions.id = comments.last_xyz_revision_id AND comment_revisions.fetch_time < NEW.fetch_time;
        END IF;
        
        RETURN NULL;
    END;
$$ LANGUAGE plpgsql;

Извини, defecate-plusplus, снова я на тебя ору из 1970-х.

gost gost, (Updated )

Комментарии (7, +7)

mysql_real_escape_string / Говнокод #27073 Ссылка на оригинал

0

  1. 1
CASE WHEN DAY(saledate)<10 THEN '0'+STR(DAY(saledate),1) ELSE STR(DAY(saledate),2) END + '.' + CASE WHEN MONTH(saledate)<10 THEN '0'+ STR(MONTH(saledate),1) ELSE STR(MONTH(saledate),2) END + '.'+ STR(YEAR(saledate),4) as SaleDate

Я у мамы программист...
convert(varchar, saledate, 104) as SaleDate

MatureGovnocoder MatureGovnocoder, (Updated )

Комментарии (47, +47)

mysql_real_escape_string / Говнокод #26859 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
SELECT 
    `1000, 1000000 field`
    (SELECT group_concat(band_category_languages.name SEPARATOR ', ')
    FROM calendar_entry_categories
    LEFT JOIN band_category_languages ON band_category_languages.band_category_id = calendar_entry_categories.band_category_id
    WHERE calendar_entry_categories.calendar_entry_id = calendar_entries.id
    AND band_category_languages.language_id = 1
    GROUP BY calendar_entry_categories.calendar_entry_id) AS band_category_string,
    (SELECT entry.id
    FROM calendar_entries AS entry
    WHERE entry.entry_kind_parent_id = calendar_entries.id
    AND entry.profile_type_id = 10869
    AND entry.profile_type = 1) AS move_to_personal_calendar,
    (SELECT count(moved_entry.id)
    FROM calendar_entries AS moved_entry
    WHERE moved_entry.entry_kind_parent_id = calendar_entries.id
    AND moved_entry.status = 3) AS count_moved,
    (SELECT user_images.image
    FROM calendar_entries AS calendar_entries1
    LEFT JOIN user_images ON user_images.id = calendar_entries1.image
    WHERE calendar_entries1.id = calendar_entries.entry_kind_parent_id
    AND calendar_entries.entry_kind = 4) AS festival_image,
    (SELECT countries1.code
    FROM calendar_entries AS calendar_entries1
    LEFT JOIN locations AS locations1 ON locations1.id = calendar_entries1.location_id
    LEFT JOIN countries AS countries1 ON countries1.id = locations1.country_id
    WHERE calendar_entries1.id = calendar_entries.entry_kind_parent_id
    AND calendar_entries.entry_kind = 4) AS festival_country_code,
    (SELECT count(*)
    FROM calendar_entry_likes
    WHERE calendar_entry_likes.calendar_entry_id = calendar_entries.id) AS count_of_likes,
    (SELECT count(*)
    FROM calendar_entry_likes
    WHERE calendar_entry_likes.calendar_entry_id = calendar_entries.id
    AND calendar_entry_likes.user_id = 10869 ) AS is_like,
    (SELECT group_concat(entry_type_languages.name SEPARATOR ', ')
    FROM calendar_entry_types
    LEFT JOIN entry_type_languages ON entry_type_languages.entry_type_id = calendar_entry_types.entry_type_id
    WHERE (calendar_entry_types.calendar_entry_id = calendar_entries.id
    OR calendar_entry_types.calendar_entry_id = calendar_entries.entry_kind_parent_id)
    AND entry_type_languages.language_id = 1
    GROUP BY calendar_entry_types.calendar_entry_id) AS entry_types_string,
    (SELECT band_addresses.city_name
    FROM band_addresses
    WHERE band_addresses.band_id = calendar_entries.profile_type_id) AS band_city_name,
    (SELECT countries.code
    FROM band_addresses
    LEFT JOIN countries ON countries.id = band_addresses.country_id
    WHERE band_addresses.band_id = calendar_entries.profile_type_id) AS band_country_code,
    (SELECT group_concat(genre_languages.name SEPARATOR ', ')
    FROM calendar_entry_genres
    LEFT JOIN genre_languages ON genre_languages.genre_id = calendar_entry_genres.genre_id
    WHERE calendar_entry_genres.calendar_entry_id = calendar_entries.id
    AND genre_languages.language_id = 1
    GROUP BY calendar_entry_genres.calendar_entry_id) AS genre_string
FROM `calendar_entries`
LEFT JOIN `locations` ON `locations`.`id` = `calendar_entries`.`location_id`
LEFT JOIN `calendar_entries` AS `festival` ON `festival`.`id` = `calendar_entries`.`entry_kind_parent_id`
LEFT JOIN `locations` AS `festival_location` ON `festival_location`.`id` = ( 
    SELECT calendar_entries1.id
    FROM calendar_entries AS calendar_entries1
    WHERE calendar_entries1.id = calendar_entries.entry_kind_parent_id
    AND calendar_entries.entry_kind = 4
)
LEFT JOIN `countries` ON `countries`.`id` = `locations`.`country_id`
LEFT JOIN `country_languages` ON `country_languages`.`country_id` = `locations`.`country_id`
LEFT JOIN `states` ON `states`.`id` = `locations`.`state_id`
LEFT JOIN `bands` ON `bands`.`id` = `calendar_entries`.`profile_type_id`
AND `bands`.`soft_delete` = 0
AND `bands`.`status` = 1
LEFT JOIN `band_images` ON `band_images`.`id` = `calendar_entries`.`image`
LEFT JOIN `band_privacy_settings` ON `band_privacy_settings`.`band_id` = `calendar_entries`.`profile_type_id`
WHERE (`bands`.`soft_delete` = 0 OR `bands`.`soft_delete` IS NULL)
AND (`bands`.`status` = 1 OR `bands`.`status` IS NULL)
AND ((
        (SELECT count(*)
        FROM band_administrators
        WHERE band_administrators.band_id = bands.id
        AND band_administrators.user_id = 10869 ) > ? OR `band_privacy_settings`.`band_privacy_level` != ?
    ) AND (
        (SELECT user_type
        FROM users
        WHERE users.id = 10869 ) = ? OR `band_privacy_settings`.`band_privacy_level` != ?
    ) AND (
        (SELECT count(*)
        FROM user_bands
        WHERE user_bands.band_id = bands.id
        AND user_bands.status = 1
        AND user_bands.user_id = 10869 ) > ? OR `band_privacy_settings`.`band_privacy_level` != ?
    ) OR `band_privacy_settings`.`band_privacy_level` IS NULL
) AND (`festival`.`entry_kind` = ? OR `festival`.`id` IS NULL)
AND (date(`calendar_entries`.`date_from`) >= ?)
AND `calendar_entries`.`soft_delete` = ?
AND (`country_languages`.`language_id` = ? OR `country_languages`.`language_id` IS NULL)
AND `calendar_entries`.`entry_kind` IN (?, ?)
AND `calendar_entries`.`event_class` IN (?, ?)
AND `calendar_entries`.`status` = ?
GROUP BY `1000, 1000000 field`
ORDER BY calendar_entries.date_from
LIMIT 1000, 20

Сидить замовник такий не тужить тай думку гадає, а що це я буду платити півтори куска спеціалусту за роботу, як є "профі" за 500 доларів, а тут ше і Вася програміст каже, а шо це ти будеш платити таку суму, як я зроблю дешевше за 300! Настрій хороший, угода укладена, робота кипить. Проходить не так багато часу, як замовник каже, а що це сторінка 2хв грузиться, а Вася каже, то нічо ми то все оптимізуємо! Проходить ще декілька місяців, а результату нема. Тоді замовнек розуміє, що Вася не профі і шукає профі в Х рази дорощого! Не так багато часу пройшло, як профі за 1000 каже, я в два рази оптимізував, більше не реально! Замовник пригнічений, шукає профі, і в один прекрасний момент знаходиться дійсно профі, який по домовленості в зарплату X оптимізував, повикидував, переписав, дописав і в результаті 50 мс при 500000 записів. Підсумок: 300 + 1000 + X != 300 :)

silverreve23 silverreve23, (Updated )

Комментарии (10, +10)

mysql_real_escape_string / Говнокод #26417 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
SET @from = 11836;
SET @to = 11840;

INSERT INTO `sprinter_catalog_tree` (
    `sprinter_catalog_tree`.`level`,
    `sprinter_catalog_tree`.`position`,
    `sprinter_catalog_tree`.`parent_id`,
    `sprinter_catalog_tree`.`catalog`,
    `sprinter_catalog_tree`.`info_id`,
--  ...
)
SELECT
    `sprinter_catalog_tree`.`level`,
    `sprinter_catalog_tree`.`position`,
    @to,
    `sprinter_catalog_tree`.`catalog`,
    `sprinter_catalog_tree`.`info_id`,
    `sprinter_catalog_tree`.`format_id`,
    `sprinter_catalog_tree`.`linked_id`,
    `sprinter_catalog_tree`.`linked_shablon_id`,
--  ...
FROM `sprinter_catalog_tree` where parent_id = @from order by id;

INSERT INTO `sprinter_catalog_tree` (
    `sprinter_catalog_tree`.`level`,
    `sprinter_catalog_tree`.`position`,
    `sprinter_catalog_tree`.`parent_id`,
    `sprinter_catalog_tree`.`catalog`,
    `sprinter_catalog_tree`.`info_id`,
--  ...
)
SELECT
    a.`level`,
    a.`position`,
    (SELECT id from sprinter_catalog_tree as b where b.parent_id = @to and b.name like (SELECT name from sprinter_catalog_tree where id = a.parent_id)),
    a.`catalog`,
    a.`info_id`,
    a.`format_id`,
    a.`linked_id`,
    a.`linked_shablon_id`,
--  ...
FROM `sprinter_catalog_tree` as a where parent_id in (SELECT id FROM sprinter_catalog_tree where parent_id = @from) order by id;

INSERT INTO `sprinter_catalog_info`
(`name`,
`eng_name`,
`text`,
--  ..
)
SELECT
    `sprinter_catalog_info`.`name`,
    `sprinter_catalog_info`.`eng_name`,
    `sprinter_catalog_info`.`text`,
    `sprinter_catalog_info`.`short_text`,
--  ...
FROM `sprinter_catalog_info` where id in (SELECT info_id from `sprinter_catalog_tree` where parent_id = @from or parent_id in (SELECT id from `sprinter_catalog_tree` where parent_id = @from));

CREATE temporary table if not exists ids
SELECT id from `sprinter_catalog_tree` where parent_id = @to or parent_id in (SELECT id from `sprinter_catalog_tree` where parent_id = @to);

UPDATE sprinter_catalog_tree as a SET info_id = (SELECT id from sprinter_catalog_info as b where a.name like b.name order by id desc limit 1) where a.id in (SELECT id from ids);

DROP table ids;

Высрал вот такое говно в качестве write-n-throw скрипта.

Дано: есть элементы дерева, хранящиеся в таблице sprinter_catalog_tree, связаны друг с другом через parent_id. Каждому из них соответствует указанный в info_id элемент таблицы sprinter_catalog_info.

Задача: скопировать все вложенные в раздел @from каталога элементы и его подразделы (вложенность не более 1 уровня) в раздел @to, так чтобы у них были новые id, и также скопировать соответствующие им sprinter_catalog_info. Скопированные sprinter_catalog_tree должны указывать на корректные sprinter_catalog_info, id которых заранее не известны.

Вот такое говно получилось, расскажите как надо было?

vistefan vistefan, (Updated )

Комментарии (192, +192)