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

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
select ...
case 
 -- периоды пересекаются только в одной точке (2)
when (vw.hEndDate=vw.rStartDate) 
then vw.hEndDate
when (vw.rEndDate=vw.hStartDate) 
then vw.rEndDate
-- периоды пересекаются в определенной области (2)
when (vw.hStartDate > vw.rstartdate and IsNull(vw.hEndDate,'01-01-2099')<IsNull(vw.rEndDate,'01-01-2099')) then vw.hStartDate
when ((vw.rStartDate between vw.hStartDate and vw.hEndDate) and (vw.hEndDate between vw.rStartDate and vw.rEndDate)) 
then vw.rStartDate
when ((vw.hStartDate between vw.rStartDate and vw.rEndDate) and (vw.rEndDate between vw.hStartDate and vw.hEndDate)) 
then vw.hStartDate
-- периоды полностью совпадают (1)
when (vw.hStartDate=vw.rStartDate and vw.hEndDate=vw.rEndDate) 
then vw.hStartDate
-- периоды совпадают в одной точке и перекрываются (4)
when (vw.hStartDate=vw.rStartDate and vw.rEndDate<vw.hEndDate) 
then vw.hStartDate
when (vw.hStartDate=vw.rStartDate and vw.hEndDate<vw.rEndDate) 
then vw.hStartDate
when (vw.hEndDate=vw.rEndDate and vw.rStartDate>vw.hStartDate) 
then vw.rStartDate
when (vw.hEndDate=vw.rEndDate and vw.rStartDate<vw.hStartDate) 
then vw.hStartDate
end as MainStartDate  
,case 
-- периоды пересекаются только в одной точке (2)
when (vw.hEndDate=vw.rStartDate) 
then vw.hEndDate
when (vw.rEndDate=vw.hStartDate) 
then vw.rEndDate
-- периоды пересекаются в определенной области (2)
when (vw.hStartDate > vw.rstartdate and IsNull(vw.hEndDate,'01-01-2099')<IsNull(vw.rEndDate,'01-01-2099')) then vw.hEndDate
when ((vw.rStartDate between vw.hStartDate and vw.hEndDate) and (vw.hEndDate between vw.rStartDate and vw.rEndDate)) 
then vw.hEndDate
when ((vw.hStartDate between vw.rStartDate and vw.rEndDate) and (vw.rEndDate between vw.hStartDate and vw.hEndDate)) 
then vw.rEndDate
-- периоды полностью совпадают (1)
when (vw.hStartDate=vw.rStartDate and vw.hEndDate=vw.rEndDate) 
then vw.hEndDate
-- периоды совпадают в одной точке и перекрываются (4)
when (vw.hStartDate=vw.rStartDate and vw.rEndDate<vw.hEndDate) 
then vw.rEndDate
when (vw.hStartDate=vw.rStartDate and vw.hEndDate<vw.rEndDate) 
then vw.hEndDate
when (vw.hEndDate=vw.rEndDate and vw.rStartDate>vw.hStartDate) 
then vw.hEndDate
when (vw.hEndDate=vw.rEndDate and vw.rStartDate<vw.hStartDate) 
then vw.hEndDate
end as MainEndDate
from (select ...
case when (IsNull(h.[EndDate],'01-01-2099')=r.[StartDate]) then '1 периоды пересекаются только в одной точке (2) h.[EndDate]=r.[StartDate]'
when(IsNull(r.[EndDate],'01-01-2099')=h.[StartDate]) then '2 периоды пересекаются только в одной точке (2) r.[EndDate]=h.[StartDate]'
-- периоды пересекаются в определенной области (2)
when (h.startdate > r.startdate and IsNull(h.[EndDate],'01-01-2099')<IsNull(r.[EndDate],'01-01-2099')) then 'Период иерархии полностью входит в период территории'
when((r.StartDate between h.StartDate and IsNull(h.[EndDate],'01-01-2099')) and (IsNull(h.[EndDate],'01-01-2099') between r.StartDate and IsNull(r.[EndDate],'01-01-2099'))) then 'периоды пересекаются в определенной области (2) 3 ((r.StartDate between h.StartDate and IsNull(h.[EndDate],01-01-2099)) and (IsNull(h.[EndDate],01-01-2099) between r.StartDate and r.EndDate))'
when((h.startdate between r.startdate and IsNull(r.[EndDate],'01-01-2099')) and (IsNull(r.[EndDate],'01-01-2099') between h.Startdate and IsNull(h.[EndDate],'01-01-2099'))) then 'периоды пересекаются в определенной области (2) 4 ((h.startdate between r.startdate and r.enddate) and (r.EndDate between h.Startdate and IsNull(h.[EndDate],01-01-2099)))'
-- периоды полностью совпадают (1)
when(h.startdate=r.startdate and IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099')) then 'периоды полностью совпадают (1) 5 (h.startdate=r.startdate and IsNull(h.[EndDate],01-01-2099)=r.enddate)'
-- периоды совпадают в одной точке и перекрываются (4)
when(h.startdate=r.startdate and IsNull(r.[EndDate],'01-01-2099')<IsNull(h.[EndDate],'01-01-2099')) then 'периоды совпадают в одной точке и перекрываются (4) 6 (h.startdate=r.startdate and r.enddate<IsNull(h.[EndDate],01-01-2099))'
when(h.startdate=r.startdate and IsNull(h.[EndDate],'01-01-2099')<IsNull(r.[EndDate],'01-01-2099')) then 'периоды совпадают в одной точке и перекрываются (4) 7 (h.startdate=r.startdate and IsNull(h.[EndDate],01-01-2099)<r.enddate)'
when(IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099') and r.startdate>h.startdate) then 'периоды совпадают в одной точке и перекрываются (4) 8 (IsNull(h.[EndDate],01-01-2099)=r.enddate and r.startdate>h.startdate)'
when(IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099') and r.startdate<h.startdate) then 'периоды совпадают в одной точке и перекрываются (4) 9 (IsNull(h.[EndDate],01-01-2099)=r.enddate and r.startdate<h.startdate)'
... where ...
(IsNull(h.[EndDate],'01-01-2099')=r.[StartDate]) 
or (IsNull(r.[EndDate],'01-01-2099')=h.[StartDate])
-- периоды пересекаются в определенной области (2)
or ((r.StartDate between h.StartDate and IsNull(h.[EndDate],'01-01-2099')) and (IsNull(h.[EndDate],'01-01-2099') between r.StartDate and IsNull(r.[EndDate],'01-01-2099')))
or ((h.startdate between r.startdate and IsNull(r.[EndDate],'01-01-2099')) and (IsNull(r.[EndDate],'01-01-2099') between h.Startdate and IsNull(h.[EndDate],'01-01-2099')))
or (h.startdate > r.startdate and IsNull(h.[EndDate],'01-01-2099')<IsNull(r.[EndDate],'01-01-2099'))
-- периоды полностью совпадают (1)
or (h.startdate=r.startdate and IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099'))
-- периоды совпадают в одной точке и перекрываются (4)
or (h.startdate=r.startdate and IsNull(r.[EndDate],'01-01-2099')<IsNull(h.[EndDate],'01-01-2099'))
or (h.startdate=r.startdate and IsNull(h.[EndDate],'01-01-2099')<IsNull(r.[EndDate],'01-01-2099'))
or (IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099') and r.startdate>h.startdate)
or (IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099') and r.startdate<h.startdate)

я даже знать не хочу, что в этом запросе на 140 строк происходит, и молю богу, чтобы это не ломалось, пока автор этого в декрете.
форматирование убрал, а то в 6к символов не помещался
отформатировать можно тут http://poorsql.com/

Запостил: Lokich Lokich, (Updated )

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

  • тут происходит "еблан пытается сделать отчет на SQL". Я таких ебланов много видал, они в любом боль-мень хуёвом интерпрайзе есть. А за одно еще и ренджи изобрели
    Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8