1. SQL / Говнокод #7403

    −850

    1. 1
    2. 2
    3. 3
    4. 4
    SELECT u.*, (SELECT count(*) FROM `projects` WHERE `autor`=u.`id`) as sum
    FROM `users` as u 
    WHERE `sum`>0
    ORDER BY `sum` DESC

    #1054 - Unknown column 'sum' in 'where clause'

    Запостил: newpdv, 31 Июля 2011

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

    • http://jpegshare.net/3a/f7/3af7a2a4311bb5517a2faaa7b1312de9.jpg.html
      Ответить
    • кто-то забыл про клаузу having?
      Ответить
      • Благодарю
        Ответить
        • а. понял. минуснул. валите на SO или еще куда.
          Ответить
          • - твой код - говно!
            - благодарю.
            комедия абсурда на говнокоде
            Ответить
        • на говнокоде не форум для проверки своего кода. не нужно постить суда свои лабы
          Ответить
    • Ппц, руки бы оторвал за такой код, в принципе и ноги и голову.
      Ответить
      • Обоснуйте...
        Ответить
        • Да чё обосновывать? Просто взять и оторвать, чтобы впредь не повадно было.
          Ответить
          • На раз Вы считаете что все плохо.
            Так покажите как надо.
            Перепишите этот код по Ваш лучший вариант
            Ответить
            • SELECT count(*) as `c` FROM `projects` Group by `autor` where c>0 Насчет where не уверен.
              Ответить
              • having, а не where
                P.S. зачем тут коррелированный подзапрос? чем inner join не угодил? темболее что его выполнение будет во много раз быстрее на больших таблицах, нежели подзапроса
                Ответить
                • SELECT u.*, COUNT(p.id) AS sum
                  FROM `users` u
                  LEFT OUTER JOIN `projects` p ON p.autor = u.id
                  GROUP BY u.id
                  ORDER BY sum DESC
                  Ответить
            • Под заплатите нам из Ваших лучших денег.
              Ответить
          • В MySQL к примеру есть небольшая командочка explain, которая показывает, как отработает запрос. А в таком виде запрос нельзя использовать,в данном случае подзапрос приведет к тому, что подзапрос будет выполнен для каждой строки таблицы users. А вот теперь предположим, что пользователей несколько миллионов....
            Ответить
            • > пользователей несколько миллионов....
              мухи, шоля?
              Ответить
              • Мухи там, или комары, не знаю. Но факт в том, что на высоконагруженных проектах бывает их больше чем несколько миллионов. Админы вообще берут и ограничивают любые джойны к примеру 20 тысячью строк, вот и крутись как хочешь.
                Ответить
              • ох эти лукоморские шуточки
                типичный однообразный штамп
                слабо придумать свою шутку?
                Ответить
                • все шутки уже давно придуманы до нас.
                  Ответить
                  • вам чуждо творчество и размышления?
                    вы только копируете и подражаете другим?
                    печально
                    Ответить
                    • отнюдь. только вот так всегда получается - пошутишь, а потом оказывается, что уже кто-то так шутил.
                      то же самое и с мыслями, и изобретениями... чем дальше, тем труднее быть оригинальным.
                      утешает одно - что прошел путь, пусть тот же, но самостоятельно
                      Ответить
      • Поддерживаю.

        Судя по коду сразу видно человека, который разбирается в SQL'е как свинья в апельсинах.
        Таким нужно запрещать писать.
        Ответить
    • показать все, что скрытоvanished
      Ответить

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