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

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
"SELECT " +
                    "2 AS recType," +
                    "1 AS cnt," +
                    "''  AS vndName," +
                    "'' AS catName," +
                    "off.orderBy1S AS orderBy1S," +
                    "off._id AS _id," +
                    "off.vendorCode AS vendorCode," +
                    "off.price AS price," +
                    "off.currencyId AS currencyId," +
                    "off.thumbnail AS thumbnail," +
                    "off.name AS name," +
                    "IFNULL(crt.quantity,0) AS quantityItem," +
                    "off.queryRest AS queryRest," +
                    "off.valueRest AS valueRest," +
                    "off.lastChangedRest AS lastChangedRest," +
                    "off.price_uah_ir AS price_uah_ir," +
                    "IFNULL(vlt.[rate],0) AS rate " + //валютный курс для currencyId товара
                    "FROM tOffer AS off " +
                    "LEFT JOIN tCart AS crt ON off.vendorCode=crt.offerId " +
                    "LEFT JOIN tCurrency AS vlt ON off.currencyId=vlt.valute " +

                    "WHERE  off.vendorName='" + BRAND_NAME + "' AND off.categoryId=" + CATEGORY_ID + " AND  (off.name LIKE " + nameFilter + ") " +
                    "UNION " +
                    "SELECT " +
                    "1," +
                    "COUNT(*)," +
                    "MAX(vnd.name)," +
                    "IFNULL(cat.name,'')," +
                    "0," +
                    "0," +
                    "0," +
                    "0," +
                    "''," +
                    "''," +
                    "vnd.name," +
                    "0," +
                    "0," +
                    "''," +
                    "''," +
                    "0," +
                    "0 " +
                    "FROM tOffer AS off " +
                    "LEFT JOIN tVendor AS vnd ON off.vendorName=vnd.name " +
                    "INNER JOIN tCategory AS cat ON off.categoryId=cat._id " +
                    "WHERE  off.vendorName='" + BRAND_NAME + "' AND off.categoryId=" + CATEGORY_ID + " AND  (off.name LIKE " + nameFilter + ") " +
                    "GROUP BY vnd.name HAVING COUNT(*)>0 " +
                    "UNION " +
                    "SELECT " +
                    "3," +
                    "COUNT(*)," +
                    "MAX('Другой товар')," +
                    "''," +
                    "0," +
                    "0," +
                    "0," +
                    "0," +
                    "''," +
                    "''," +
                    "'Другой товар'," +
                    "0," +
                    "0," +
                    "''," +
                    "''," +
                    "0," +
                    "0 " +
                    "FROM tOffer AS off " +
                    "WHERE  off.vendorName<>'" + BRAND_NAME + "' AND  (off.name LIKE " + nameFilter + ") " +
                    "GROUP BY 'Другой товар' HAVING COUNT(*)>0 " +
                    "UNION " +
                    "SELECT " +
                    "4," +
                    "1," +
                    "''," +
                    "''," +
                    "off.orderBy1S," +
                    "off._id," +
                    "off.vendorCode," +
                    "off.price," +
                    "off.currencyId," +
                    "off.thumbnail," +
                    "off.name," +
                    "IFNULL(crt.quantity,0)," +
                    "off.queryRest," +
                    "off.valueRest," +
                    "off.lastChangedRest," +
                    "off.price_uah_ir," +
                    "IFNULL(vlt.[rate],0) " + //валютный курс для currencyId товара
                    "FROM tOffer AS off " +
                    "LEFT JOIN tCart AS crt ON off.vendorCode=crt.offerId " +
                    "LEFT JOIN tCurrency AS vlt ON off.currencyId=vlt.valute " +
                    "WHERE  off.vendorName<>'" + BRAND_NAME + "' AND  (off.name LIKE " + nameFilter + ") " +
                    "ORDER BY  recType,orderBy1S ";

Комменты говорят, что это поиск по бренду и названию

makesense makesense, (Updated )

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

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

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
select
  x1.airport, x1.amount, x1.exempt
from
  Taxes x1
where
  x1.code = 'departure'
  and x1.airport in (
    select
      xx1.airport
    from
      (select
        yx1.airport
      from
        Taxes yx1
      where
        yx1.airport = x1.airport
        and yx1.code = x1.code
      group by
        yx1.airport, yx1.amount, yx1.exempt
      ) xx1
    group by xx1.airport
    having count(xx1.airport) > 1
  )
;

Давно я не копался в SQL. Вот что нагородил :(

Суть такова: у аэропортов есть departure tax, который может быть разный в зависимости от некоторых критериев (нерелевантно каких).
А может быть и одинаковый. Но все равно аэропорт может иметь несколько рядков в БД (с одинаковым amount). А еще может быть exempt = 'X',
что тождественно amount = 0.

Задача: выбрать все рядки с departure tax для аэропортов у которых taxamt/exempt разный в зависимости от некоторых других критериев.

Elvenfighter Elvenfighter, (Updated )

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

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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
SELECT clips.NAME, clips.DATE_OUT, clips.AUTHOR, clips.TOPIC, clips.ANNOT
FROM clips
WHERE (clips.NAME like ("*" + [Forms]![ПОИСК]!clips_NAME + "*") Or [Forms]![ПОИСК]!clips_NAME = "") And
(clips.topic like ("*" + [Forms]![ПОИСК]!topics_NAME + "*") Or [Forms]![ПОИСК]!topics_NAME = "" Or  [Forms]![ПОИСК]!topics_NAME Is Null) And
(clips.Author like ("*" + [Forms]![ПОИСК]!Authors_NAME + "*") Or [Forms]![ПОИСК]!Authors_NAME = "" Or  [Forms]![ПОИСК]!Authors_NAME Is Null) And
(clips.ANNOT like ("*" + [Forms]![ПОИСК]!ANNOT + "*") Or [Forms]![ПОИСК]!ANNOT = ""Or [Forms]![ПОИСК]!ANNOT Is Null) And
((clips.Date_out <=  [Forms]![ПОИСК]!Date_max And clips.Date_out >=  [Forms]![ПОИСК]!Date_min) Or clips.Date_out Is Null);

База данных на Access.
Переделка другой БД, в которой зачем-то все авторы хранились в отдельной таблице, а в основной таблице - айдишники. Можно ведь просто прописать авторов в основную таблицу и не париться.

Steve_Brown Steve_Brown, (Updated )

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

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

0

  1. 1
UPDATE `xxx` SET `updated_count` = (UPDATE `yyy` SET `zzz` = 0 WHERE `zzz` = 42)

Минимальный код в моей проблеме. Проблема в том, что UPDATE должен возвращать число изменённых строк, а MYSQL говорит, что тут ошибка. Что же мне теперь делать?

d_fomenok d_fomenok, (Updated )

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

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

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
while exists (
  select 
    C.CONTRAGENT_NAME,
    PR.PHONE 
  from CONTRAGENTS C
    inner join CONTRAGENT_PROPERTIES PR on PR.CONTRAGENT_ID = C.CONTRAGENT_ID
  except select NAME,PHONE from IMPORT_SOURCE)
begin
  declare @IDENTITIES table (CONTRAGENT_ID int)
  insert CONTRAGENTS (
    CONTRAGENT_NAME,
    …)
  output inserted.CONTRAGENT_ID into @IDENTITIES
  select distinct
    NAME,
    …
  from IMPORT_SOURCE

  insert CONTRAGENT_PROPERTIES (
    …,
    PHONE,
    …)
  select
    …,
    S.PHONE
    …
  from @IDENTITIES I
    inner join CONTRAGENTS C on C.CONTRAGENT_ID = I.CONTRAGENT_ID
    cross apply (
      select top 1
      from IMPORT_SOURCE S
        left join (
          select
            C.CONTRAGENT_NAME,
            PR.PHONE 
          from CONTRAGENTS C
            inner join CONTRAGENT_PROPERTIES PR on PR.CONTRAGENT_ID = C.CONTRAGENT_ID
        ) TX on TX.CONTRAGENT_NAME = S.NAME and TX.PHONE = S.PHONE
      where TX.CONTRAGENT_NAME is null)
end

Импорт. В источнике за ключевые поля нужно было взять NAME и PHONE, которые в целевой базе — в разных таблицах. Курсоры — слишком долго.

tucvbif tucvbif, (Updated )

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

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

0

  1. 1
  2. 2
  3. 3
if length(varrstr(cellphoneidx) != 11) or regexp_instr(varrstr(cellphoneidx), '\d\d\d\d\d\d\d\d\d\d') = 0 then
  return 1;
end if;

Проверка на валидность номера телефона (с вкраплениями pl/sql):
И так везде, где требуется проверка на определенное количество цифр (номер инн, док-ов и т.д.).
Псц, товарищи.

ChezterLP ChezterLP, (Updated )

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

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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
SUM(
  CAST (
    SUBSTRING(CAST([PercentAmount] AS VARCHAR),1, CHARINDEX ('.',[PercentAmount])-1) 
    + '.'
    + SUBSTRING(CAST([PercentAmount] AS VARCHAR),CHARINDEX('.',[PercentAmount])+1, 2+CHARINDEX ('.',[PercentAmount])) 
AS MONEY))

А как вы достигаете точности в 2 знака после запятой?

dreamca4er dreamca4er, (Updated )

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

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

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
CREATE TABLE [dbo].[TBL_JOUR_PRODUCTION_PLAN_KK_BH](
	[JPPKKBH_ID] [uniqueidentifier] NOT NULL,
	[JPPKKBH_JPKKBH_ID] [uniqueidentifier] NOT NULL,
	[JPPKKBH_WC_ID] [int] NOT NULL,
	[JPPKKBH_DATE] [datetime] NOT NULL,
	[JPPKKBH_QTY] [numeric](30, 5) NOT NULL,
	[JPPKKBH_QTYF] [numeric](30, 5) NOT NULL,
	[JPPKKBH_COMENT] [varchar](8000) NULL,
	[JPPKKBH_DESCRIPTION] [varchar](8000) NOT NULL,
	[JPPKKBH_WHO] [varchar](150) NOT NULL,
	[JPPKKBH_WHO_ID] [uniqueidentifier] NOT NULL,
	[JPPKKBH_WHEN] [datetime] NOT NULL,
(

CREATE TABLE [dbo].[TBL_JOUR_PRODUCTION_PLAN_KK_BH_HISTORY](
	[JPPKKBHH_ID] [uniqueidentifier] NOT NULL,
	[JPPKKBHH_JPPKKBH_ID] [uniqueidentifier] NOT NULL,
	[JPPKKBHH_JPPKKBH_JPKKBH_ID] [uniqueidentifier] NOT NULL,
	[JPPKKBHH_JPPKKBH_WC_ID] [int] NOT NULL,
	[JPPKKBHH_JPPKKBH_DATE] [datetime] NOT NULL,
	[JPPKKBHH_JPPKKBH_QTY] [numeric](30, 5) NOT NULL,
	[JPPKKBHH_JPPKKBH_QTYF] [numeric](30, 5) NOT NULL,
	[JPPKKBHH_JPPKKBH_COMENT] [varchar](8000) NULL,
	[JPPKKBHH_JPPKKBH_DESCRIPTION] [varchar](8000) NOT NULL,
	[JPPKKBHH_JPPKKBH_WHO_ID] [uniqueidentifier] NULL,
	[JPPKKBHH_JPPKKBH_WHEN] [datetime] NOT NULL,
	[JPPKKBHH_OPER] [int] NOT NULL,
	[JPPKKBHH_WHO_ID] [uniqueidentifier] NOT NULL,
	[JPPKKBHH_WHEN] [datetime] NOT NULL,
(

no comments

Kaldblpb Kaldblpb, (Updated )

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