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

0

  1. 1
  2. 2
  3. 3
SELECT g.name, (
SELECT (SELECT json_agg(b) users FROM (SELECT array_agg(a) result FROM (SELECT u.id, getimage(ARRAY[u.avatar_id]), gu.role FROM sys_users u INNER JOIN groups_users gu ON u.id = gu.user_id AND gu.group_id = g.id) a) b)
)->0->'result' users FROM groups g WHERE url = 'test'

Агонь-запрос

Stefan_Hitskov Stefan_Hitskov, (Updated )

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

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

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
DROP TABLE cur; 
create table cur ( 
id int AUTO_INCREMENT, 
name varchar(3), 
value int, 
data datetime, 
PRIMARY KEY (id) 
); 

insert into cur values 
(1, 'usd', 30, '20170130'), 
(2, 'usd', 33, '20170130'), 
(3, 'eur', 40, '20170130'), 
(4, 'gbp', 50, '20170130'); 

select * from (select * from cur order by data DESC, id desc) 
t1 group by name; 
# работает только на MySQL

no coments;

Koshak90 Koshak90, (Updated )

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

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

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
select
0 as IS_WRK,
case when DD.DELIVERY_DET_ID is null then 1 else 0 end NW,
0 as NH,
round(WO.AMOUNT * AD.PRICE_BASE*100.0/(100.0+AD.NDS), 2)*AMM.CURS*CDS.CURRENCY_KOEF/CDV.CURRENCY_KOEF as SUMM_NO_NDS,
round(WO.AMOUNT * AD.PRICE_BASE, 2)*AMM.CURS*CDS.CURRENCY_KOEF/CDV.CURRENCY_KOEF as SUMM_VV,
case 
  when DD.DELIVERY_DET_ID is null
    then 
     ( isnull(round(WO.AMOUNT * A.PRICE_IN *
           (select CURRENCY_KOEF from CURRENCY_DAILY (nolock) where CURRENCY_GROUP_ID =
              (select CURRENCY_GROUP_ID from CURRENCY_GROUP (nolock) where CURRENCY_DATE =
                 (select max(CURRENCY_DATE) from CURRENCY_GROUP (nolock) where CURRENCY_DATE <= AD.DATE_ACTION)) and CURRENCY_ID = @Currency)
          /
           (select CURRENCY_KOEF from CURRENCY_DAILY (nolock) where CURRENCY_GROUP_ID =
              (select CURRENCY_GROUP_ID from CURRENCY_GROUP (nolock) where CURRENCY_DATE =
                 (select max(CURRENCY_DATE) from CURRENCY_GROUP (nolock) where CURRENCY_DATE <= AD.DATE_ACTION)) and CURRENCY_ID = A.CURRENCY_ID), 2),0)
      )
   
   else 
     (     /* 08.04.2015 - 4700 BEGIN */
         ISNULL (  round(WO.AMOUNT *case @Currency
           when DM.CURRENCY_ID then  DD.PRICE_NO_NDS
           when @CurrencyBase then DD.PRICE_BASE*(100.0/(100.0+DD.NDS))
           else DD.PRICE_BASE*(100.0/(100.0+DD.NDS))*CDS.CURRENCY_KOEF
        end, 2),  0)  
         /* 08.04.2015 - 4700 END */
      )
   end
  as IN_NO_NDS,
case 
  when DD.DELIVERY_DET_ID is null
    then 
     ( isnull(round(WO.AMOUNT * A.PRICE_IN *
           (select CURRENCY_KOEF from CURRENCY_DAILY (nolock) where CURRENCY_GROUP_ID =
              (select CURRENCY_GROUP_ID from CURRENCY_GROUP (nolock) where CURRENCY_DATE =
                 (select max(CURRENCY_DATE) from CURRENCY_GROUP (nolock) where CURRENCY_DATE <= AD.DATE_ACTION)) and CURRENCY_ID = @Currency)
          /
           (select CURRENCY_KOEF from CURRENCY_DAILY (nolock) where CURRENCY_GROUP_ID =
              (select CURRENCY_GROUP_ID from CURRENCY_GROUP (nolock) where CURRENCY_DATE =
                 (select max(CURRENCY_DATE) from CURRENCY_GROUP (nolock) where CURRENCY_DATE <= AD.DATE_ACTION)) and CURRENCY_ID = A.CURRENCY_ID), 2),0)
      )
   
   else 
     (     /* 08.04.2015 - 4700 BEGIN */
         ISNULL(round(WO.AMOUNT *case @Currency
           when DM.CURRENCY_ID then  DD.PRICE
           when @CurrencyBase then DD.PRICE_BASE
           else DD.PRICE_BASE*(100.0/(100.0+DD.NDS))*CDS.CURRENCY_KOEF
        end, 2), 0) 
          /* 08.04.2015 - 4700 END */
      )
   end
   as IN_VV,
AD.USER_WRITER as WRITER,
AD.ACCOUNT_ID
from ACCOUNT_DETAIL as AD (nolock)
inner join @AM as AM on AM.ACCOUNT_ID = AD.ACCOUNT_ID
inner join ARTICLE as A (nolock) on A.ARTICLE_ID = AD.ARTICLE_ID
left join #_WRITEOUT_TEMP_REST_ as WO on WO.ACCOUNT_DET_ID = AD.ACCOUNT_DET_ID
left join DELIVERY_DETAIL as DD (nolock) on WO.ROOT_ID = DD.DELIVERY_DET_ID
left join DELIVERY_MASTER as DM (nolock) on DM.DELIVERY_MST_ID = DD.DELIVERY_MST_ID
inner join ACCOUNT_MASTER AMM (nolock) on AMM.ACCOUNT_ID=AM.ACCOUNT_ID
inner join CURRENCY_DAILY CDV (nolock) on ((CDV.CURRENCY_GROUP_ID = AMM.CURRENCY_GROUP_ID)and(CDV.CURRENCY_ID = AMM.CURRENCY_ID))
inner join CURRENCY_DAILY CDS (nolock) on ((CDS.CURRENCY_GROUP_ID = AMM.CURRENCY_GROUP_ID)and(CDS.CURRENCY_ID = @Currency)) 
where
AD.IS_WRITEOUT = 0 and AD.OUT = 1
and (@Articles = '' and @ArticleGroups = '' or charindex(',' + convert(varchar, A.ARTICLE_ID) + ',', @Articles) > 0
or charindex(',' + convert(varchar, A.GROUP_ID) + ',', @ArticleGroups) > 0)

Xzibit.jpg

tucvbif tucvbif, (Updated )

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

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

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
CREATE OR REPLACE VIEW LOAD_PROMOTIONCATEGORY
AS
SELECT
 ROW_NUMBER() OVER (ORDER BY CATEGORY_NAME,SUBCATEGORYNAME ASC) AS PROMOTIONCATEGORYID
, CATEGORY_NAME
, SUBCATEGORYNAME
FROM
(
SELECT
DISTINCT
 PROMO_CATEGORY AS CATEGORY_NAME
, PROMO_SUBCATEGORY AS SUBCATEGORYNAME
FROM
LIY26.LI_PROMOTIONS
) PROMO

Правда, я впервые вижу такую расстановку строк... Сколько не пытаюсь понять ее логику — нифига.

morpheby morpheby, (Updated )

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

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

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
SELECT NVL(ГРУППЫ.НГ, 'ИТОГО') "ГРУППА", DECODE(GROUPING(ГРУППЫ.НГ), 0, AVG(ГРУППЫ.КОЛВО),
                                                                     1, (SELECT COUNT(НОМЕР_СТУДЕНТА) FROM СТУДЕНТ)) "КОЛ-ВО СТУДЕНТОВ", 
      DECODE(GROUPING(ГРУППЫ.НГ), 0, ГРУППЫ.НАЗВ_НАП,
                                  1, (SELECT LISTAGG(НАЗВАНИЕ_НАПРАВЛЕНИЯ, ', ') 
                                          WITHIN GROUP (ORDER BY НАЗВАНИЕ_НАПРАВЛЕНИЯ)
                                      FROM НАПРАВЛЕНИЕ
                                      WHERE КОД_НАПРАВЛЕНИЯ IN (SELECT КОД_НАПРАВЛЕНИЯ
                                                                FROM ГРУППА))) "НАЗВАНИЕ СПЕЦИАЛЬНОСТИ", 
      COUNT(НОМ_СТУД)"КОЛ-ВО КРУГЛЫХ ОТЛИЧНИКОВ", 
   NVL(LISTAGG(ФАМ, ', ') WITHIN GROUP (ORDER BY ФАМ), ' ') "ФАМИЛИИ ОТЛИЧНИКОВ" 
FROM                              
    (SELECT COUNT(*) КОЛВО, СТ.НОМЕР_ГРУППЫ НГ, НАП.НАЗВАНИЕ_НАПРАВЛЕНИЯ НАЗВ_НАП 
                      FROM СТУДЕНТ СТ LEFT OUTER JOIN                             
                            ГРУППА ГР ON СТ.НОМЕР_ГРУППЫ=ГР.НОМЕР_ГРУППЫ
                            LEFT OUTER JOIN НАПРАВЛЕНИЕ НАП ON НАП.КОД_НАПРАВЛЕНИЯ=ГР.КОД_НАПРАВЛЕНИЯ
                      GROUP BY СТ.НОМЕР_ГРУППЫ, НАП.НАЗВАНИЕ_НАПРАВЛЕНИЯ) ГРУППЫ
                  
LEFT OUTER JOIN
    (SELECT СТ.НОМЕР_СТУДЕНТА НОМ_СТУД, СТ.НОМЕР_ГРУППЫ НОМ_ГРУП, НГ.КОД_НАПРАВЛЕНИЯ КОД_НАПР, СТ.ФАМИЛИЯ ФАМ, 5 СРЕД_ОЦЕНКА
    FROM СТУДЕНТ СТ INNER JOIN ГРУППА НГ ON СТ.НОМЕР_ГРУППЫ=НГ.НОМЕР_ГРУППЫ
                                LEFT JOIN УЧЕБНЫЙ_ПЛАН УП ON НГ.КОД_НАПРАВЛЕНИЯ=УП.КОД_НАПРАВЛЕНИЯ
                                LEFT JOIN УСПЕВАЕМОСТЬ УСП ON УСП.НОМЕР_СТУДЕНТА=СТ.НОМЕР_СТУДЕНТА AND УСП.НОМЕР_ДИСЦИПЛИНЫ=УП.НОМЕР_ДИСЦИПЛИНЫ       
    INTERSECT
    --ТАБЛИЦА "ПЕРВ"
    SELECT ВТОР.НОМЕР_СТУДЕНТА, ВТОР.Н_Г, ВТОР.КОД_НАПР, ВТОР.ФАМ, ВТОР.СРЕД_ОЦЕНКА 
    FROM  
        (SELECT КОД_НАПРАВЛЕНИЯ, COUNT(НОМЕР_ДИСЦИПЛИНЫ) CNT
        FROM УЧЕБНЫЙ_ПЛАН
        GROUP BY КОД_НАПРАВЛЕНИЯ) ПЕРВ
    INNER JOIN
    (SELECT НОМЕР_СТУДЕНТА, КОД_НАПР, Н_Г, ФАМ, COUNT(НОМ_ДИСЦИП) CNT, AVG(ОЦЕН) СРЕД_ОЦЕНКА
    FROM  
        (SELECT СТ.НОМЕР_СТУДЕНТА, ГР.НОМЕР_ГРУППЫ Н_Г, СТ.ФАМИЛИЯ ФАМ, УП.КОД_НАПРАВЛЕНИЯ КОД_НАПР, УС.НОМЕР_ДИСЦИПЛИНЫ НОМ_ДИСЦИП, УС.ОЦЕНКА ОЦЕН
        FROM УСПЕВАЕМОСТЬ УС INNER JOIN СТУДЕНТ СТ ON УС.НОМЕР_СТУДЕНТА=СТ.НОМЕР_СТУДЕНТА
                            LEFT OUTER JOIN ГРУППА ГР ON СТ.НОМЕР_ГРУППЫ=ГР.НОМЕР_ГРУППЫ
                            LEFT OUTER JOIN УЧЕБНЫЙ_ПЛАН УП ON ГР.КОД_НАПРАВЛЕНИЯ=УП.КОД_НАПРАВЛЕНИЯ AND УП.НОМЕР_ДИСЦИПЛИНЫ=УС.НОМЕР_ДИСЦИПЛИНЫ )
        INNER JOIN УЧЕБНЫЙ_ПЛАН УП2 ON УП2.КОД_НАПРАВЛЕНИЯ=КОД_НАПР AND УП2.НОМЕР_ДИСЦИПЛИНЫ=НОМ_ДИСЦИП
    GROUP BY НОМЕР_СТУДЕНТА, КОД_НАПР, Н_Г, ФАМ) ВТОР
    ON ПЕРВ.КОД_НАПРАВЛЕНИЯ=ВТОР.КОД_НАПР AND ПЕРВ.CNT=ВТОР.CNT ) ОТЛ
ON ГРУППЫ.НГ=ОТЛ.НОМ_ГРУП
GROUP BY GROUPING SETS((ГРУППЫ.НГ, ГРУППЫ.НАЗВ_НАП),());

ilgsha ilgsha, (Updated )

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

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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
--Проверка существования контракта
    select con.id_column
      into l_id
      from contract con
     where con.dt_start <= pDATE
       and con.dt_stop > pDATE;

    if l_id is null  then
      raise_application_error(-20000,
                              'Ошибка поиска контракта на дату' || pDATE);
    end if;

Блок pl sql, ищет контракт на указанную данную. Но результат всегда будет либо idl, либо no_data_found. Но проверок много не бывает :)

myxolod myxolod, (Updated )

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

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

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
SELECT `hours`.`hour` as `h` ,SUM(IF(HOUR(`i`.`time`)=`hours`.`hour`,1,0)) as `count`
        FROM `table_name` i
         INNER JOIN (SELECT 0 `hour`
             UNION ALL SELECT 1
             UNION ALL SELECT 2
             UNION ALL SELECT 3
             UNION ALL SELECT 4
             UNION ALL SELECT 5
             UNION ALL SELECT 6
             UNION ALL SELECT 7
             UNION ALL SELECT 8
             UNION ALL SELECT 9
             UNION ALL SELECT 10
             UNION ALL SELECT 11
             UNION ALL SELECT 12
             UNION ALL SELECT 13
             UNION ALL SELECT 14
             UNION ALL SELECT 15
             UNION ALL SELECT 16
             UNION ALL SELECT 17
             UNION ALL SELECT 18
             UNION ALL SELECT 19
             UNION ALL SELECT 20
             UNION ALL SELECT 21
             UNION ALL SELECT 22
             UNION ALL SELECT 23) `hours`
 	 	 WHERE `service_id`= SOME_SERVICE_ID
                    AND `date` BETWEEN STR_TO_DATE(SOME_DATE, '%Y-%m-%d ')
							      AND  STR_TO_DATE(SOME_DATE, '%Y-%m-%d ')
         GROUP BY `hours`.`hour`

Объединений много не бывает...

fens fens, (Updated )

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

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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
/* где-то на 4м уровне подзапросов из подзапросов нашёл такое:  */
( 
	SELECT 1 AS num , .... 120 строк логики на case/when/then ....
	FROM tablea a 
               WHERE a.id = @id /*  70млн, есть индекс по id, не уникальный */
) AS tbl1 
 LEFT JOIN ( 
	SELECT 1 AS num , еще чуть-чуть case/when/then
		FROM tableb b 
		WHERE b.reference = @value /* 80млн, есть индекс но половина записей - пустые строки. */ ) AS tbl2
	ON tbl1.num = tbl2.num

left join по константам.

bliznezz bliznezz, (Updated )

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

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

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
(case 
      when (ccc.company_ogrn=0 or ccc.company_ogrn='') 
      then '<span class=red>не заполнено, заполните в 1С</span>' else ccc.company_ogrn end ) 
      else ccc.company_ogrn end company_ogrn,
     case when ccc.company_prefix <> 4 then 
     (case when (ccc.company_kpp=0 or ccc.company_kpp='') 
     then '<span class=red>не заполнено, заполните в 1С</span>' 
     else ccc.company_kpp end ) else ccc.company_kpp end company_kpp,
    case when ccc.company_prefix = 0 then 
     '<span class=red>не заполнено, заполните в 1С</span>' 
     else ccp.prefix_name end prefix_name,
    case when ccc.company_jur_name = '' then 
     '<span class=red>не заполнено, заполните в 1С</span>' 
     else ccc.company_jur_name end company_jur_name,
    case when ccc.company_inn = '' then 
    '<span class=red>не заполнено, заполните в 1С</span>' 
    else ccc.company_inn end company_inn,
    case when company_jur_address = '' then 
    '<span class=red>не заполнено, заполните в 1С</span>' else 
    ccc.company_jur_address end company_jur_address,
    case when ccc.company_fact_address = '' then 
    '<span class=red>не заполнено, заполните в 1С</span>' else 
    ccc.company_fact_address end company_fact_address,
    case when ccc.company_post_address = '' then 
    '<span class=red>не заполнено, заполните в 1С</span>' else 
    ccc.company_post_address end company_post_address,

Да, это часть MySql запроса.
Верстка в SQL, Карл

ixvil ixvil, (Updated )

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

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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Orders1]') AND type in (N'U'))
  IF EXISTS (SELECT * FROM [dbo].[Orders1])
BEGIN
   SELECT * FROM [dbo].[Orders1] where OrderID = 1
END

Кусок кода из живого проекта в котором очень сильно борятся за перформенс.

foxocoder foxocoder, (Updated )

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