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) RSS

  • Попутно вопрос: зачем досихпор SQL предполагается ПИСАТЬ КРИКОМ? (напр. так предлагают делать автоподстановка а Oracle SQL Developer и w3schools).
    Ответить
    • Это хорошо читается, видно без подсветки даже в терминале, где ключевые слова, а где имена сущностей. Если говорить об эстетике, в этом есть свой стиль. Ещё некоторые подстветки (например, в моём саблайме) понимают, что строка является запросом по такому признаку, легко получается отличить от строкового литерала.
      Ответить
        • Попадается такой код на работе, но это, конечно, боже упаси.
          Просто есть вещи, которые нихуя не выразишь на query builder'ах всяких фреймворков. Всякие подзапросы. Я подозреваю, что это, конечно из-за незнания sql или конкретного билдера, но иногда на узнавание нет времени, а под рукой предательски маячит raw query.

          Кстати, а как у богов?
          Ответить
          • У богов стараются выносить SQL в отдельные файлы и использовать prepared statement если не хватает квери билдера.

            Условно говоря:

            do_all.sql:
            "SELECT * from pitushok where kurochka> @n"
            Ответить

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

Из-за тебя ушел bormand, guest!

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


    8