1. Java / Говнокод #6907

    +147

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    Query query = entityManager.createNativeQuery(
                            "select * from ("
                                    + "select g4.id as goodId, g4.name as goodName, g4.code as goodCode, "
                                    + "u4.name as uomName, sum(bgd.quantity_out) as quantityOut, "
                                    + " g4.productcode as goodProductCode, sum(bgd.quantity_return) as quantityReturn "
                                    + "from good g4 "
                                    + "inner join consignment cs1 on cs1.good_id = g4.id "
                                    + (customizationUtilSQL == null ? "" : customizationUtilSQL.buildCustomAttributesQueryInnerPart())
                                    + " inner join "
                                    + "(select gg.consignment_id, op.sourcestore_id as place_id, " +
                                    		" sum(gg.quantity) as quantity_out, sum(coalesce(srset.return_quantity, 0)) as quantity_return "
                                    + "from motion gg "
                                    + "inner join operation op " +
                                    		" on (gg.operation_id = op.id " +
                                    		" and op.company = gg.company" +
                                            (projectId == null ? "" : " and (op.project_id  = :projectId) ") +
                                            (contractId == null ? "" : " and (op.contract_id  = :contractId) ") +
                                    		") "
                                    + "inner join place pld on op.sourcestore_id = pld.id "
                            		+ " left outer join "
                    				+ " (select ds.demand_id as demand_id, srm.consignment_id as consignment_id, srm.sum as sum, " +
                    						" sum(srm.quantity) as return_quantity from demand_salesreturn ds " +
                    						" inner join operation sr on sr.id = ds.salesreturn_id " +
                    						" inner join motion srm on srm.operation_id = sr.id " +
                    						" where sr.dtype = 'SalesReturn' " +
                                            " and sr.deleted is null " +
                                            (!includeAboardOperations ? " and sr.applicable = true " : "") +
                                            " and (sr.moment between :upToDate and :toDate) " +
                                            " and " + SecurityUtil.companyFilterSQL("sr") +
                    						" group by ds.demand_id, srm.consignment_id, srm.sum) srset " +
                    						" on (srset.demand_id = op.id and srset.sum = gg.sum " +
                    						" and srset.consignment_id = gg.consignment_id) "
                                    + (agentId == null ? "" :
                                        " left outer join requisite tr on op.targetagentrequisite_id = tr.id "
                                        + " left outer join requisite sr on op.sourceagentrequisite_id = sr.id "
                                        + " left outer join agent agt on tr.agent_id = agt.id "
                                		+ " left outer join agent ags on sr.agent_id = ags.id ")
                                    + "where " + SecurityUtil.companyFilterSQL("op")
                                    + " and op.deleted is null "
                                    + (!includeAboardOperations ? " and op.applicable = true " : "")
                                    + " and (op.moment between :upToDate and :toDate) "
                                    + " and op.dtype = 'Demand' "
                                    + (agentId == null ? ""
                                        : " and ((ags.path || ags.id) like ( "
                                            + "select distinct (a21.path || a21.id || '%') from agent a21  where a21.id = :agentId) or "

    всё не влезло, вообще тут 65 строк. пожалуйста выскажите ваше мнение об этом коде. спасибо :)

    Запостил: ab368, 09 Июня 2011

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

    • +"(agt.path || agt.id) like ( "
      + "select distinct (a22.path || a22.id || '%') from agent a22 where a22.id = :agentId)) ")
      + (storeId == null ? ""
      : " and (pld.path || pld.id) like ( "
      + "select distinct (p2.path || p2.id || '%') from "
      + "place p2 where p2.id = :storeId) ")
      + " group by gg.consignment_id, op.sourcestore_id) as bgd on cs1.id = bgd.consignment_id "
      + " left outer join uom u4 on g4.uom_id = u4.id "
      + " where 1 = 1 "
      + (goodId == null ? "" :
      " and (g4.path || g4.id) like (select distinct (g31.path || g31.id || '%') from good g31 where g31.id = :goodId) ")
      + (supplierId == null ? ""
      : " and (g4.supplier_id = :supplierId) ")
      + (customizationUtilSQL == null ? " "
      : customizationUtilSQL.buildCustomAttribut esQueryWherePart(false, true))
      + " group by g4.id, g4.name, g4.code, u4.name, g4.productcode "
      + " having (sum(bgd.quantity_out) - sum(bgd.quantity_return) > :underZero)"
      + ") fullquery "
      + sorting.toString())
      Ответить
    • это вот как раз то, что не влезло в основной пост :)
      Ответить
    • Я хуею, дорогая редакция
      Ответить
    • вот, товарищи, явный пример по теме http://govnokod.ru/6902#comment91509

      дохуища SQL-УГ, которого мы навидались до рвоты в разделе PHP
      не смешно и нет желания нырять в это с головой.
      Ответить
    • это кстати говоря не лабы, а продакшн-код одного полуизвестного отечественного стартапа.
      Ответить
    • надо ли говорить, но работает этот код естественно неправильно. и мне этот баг надо найти и исправить :) вот такие вот они, эти ваши отечественные стартапы.
      Ответить
    • Еще бы модель БД в студию, там тоже есть на что посмотреть.
      UPD: капча не сработала, аднака =\
      Ответить
      • ШОК!!! Жук Мне Не срывает покровы с загадочной капчи! Узнать подробнее >>
        капча была запилена для того, чтобы больные мишустиазом не могли постить много подзалупного творожка в автоматическом режиме. соответственно, работает по принципу rate-limitera и не пропускает каменты, если юзер постит более чем N комментов/секунду. показ капчи подчиняется тому же принципу.
        и хватит об этом, ибо боян
        Ответить
    • 5 нормальная форма - соединения дожны быть тривиальны и связаны с потенциальными ключами
      темболее, сколько времени на анализаторе показывает выполнение этого запроса?
      Ответить
    • мне в DLE мускул запросы нравятся, как-то дали починить сайтик один, так там DLE генерил запрос типа SELECT blah,........... FROM `dle_post` WHERE `id` IN ( и тут 7 МЕГАБАЙТ!!!!!!!!! айдишников через запятую ), запрос отрабатывал от 45 секунд до 10 минут, как повезет...
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • мерси )
      Ответить
    • показать все, что скрытоGrzegorz Brzęczyszczykiewicz,
      Chrząszczyżewoszyce powiat Łękołody
      Ответить
    • писать на джабе уныло
      Ответить

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