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

    −859.4

    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
    SET @DD = DATEPART(dd, GETDATE())
    SET @MM = DATEPART(mm, GETDATE())
    SET @YYYY = DATEPART(yyyy, GETDATE())
    
    IF LEN(@DD) = '1'
    	BEGIN
    		SET @DD = '0' + @DD
    	END
    IF LEN(@MM) = '1'
    	BEGIN
    		SET @MM = '0' + @MM
    	END
    
    SET @DT_D = @DD + '.' + @MM + '.' + @YYYY

    Изврат по превращению текущей даты в нужный формат в MSSQL

    Junior, 01 Февраля 2010

    Комментарии (1)
  2. SQL / Говнокод #2451

    −861.2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    SELECT * FROM obj WHERE telephon LIKE '***' AND off = 0;
    
    SELECT obj.* FROM 
    obj 
    INNER JOIN obj2ls ON obj.ObjID = obj2ls.ObjKod AND obj2ls.Bdate <= CURDATE() AND obj2ls.Edate >= CURDATE() AND obj2ls.off = 0 
    INNER JOIN ls ON obj2ls.LsKod = ls.lsid AND ls.off = 0
    INNER JOIN ls2contr ON ls.lsid = ls2contr.lskod AND ls2contr.bdate <= CURDATE() AND ls2contr.edate >= CURDATE() AND ls2contr.off = 0
    INNER JOIN contr ON ls2contr.contrkod = contr.contrid AND contr.off = 0
    WHERE obj.telephon LIKE '***' AND obj.off = 0 AND contr.contr_type = 2;

    О плохом проектировании базы данных.
    Был простой запрос, к нему добавили проверку 1го(!) доп. условия.
    Еще умиляют JOINы в духе *Kod = *Id.

    Mihard, 19 Января 2010

    Комментарии (1)
  3. SQL / Говнокод #2442

    −852.1

    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
    CREATE TABLE account(
    	balance INT DEFAULT 0,
    	name VARCHAR(60) NOT NULL,
    	surname VARCHAR(60) DEFAULT NULL,
    	login VARCHAR(60) NOT NULL,
    	password VARCHAR(256) NOT NULL,
    	active BOOLEAN DEFAULT FALSE,
    	UNIQUE KEY login (login),
    	id INT AUTO_INCREMENT PRIMARY KEY 
    ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8
    
    CREATE TABLE email(
    	email VARCHAR(255) NOT NULL,
    	user_id INT NOT NULL,
    	UNIQUE KEY email (email),
    	id INT AUTO_INCREMENT PRIMARY KEY,
    	FOREIGN KEY (user_id) REFERENCES account (id)
    		ON DELETE CASCADE
    		ON UPDATE CASCADE
    ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8
    
    CREATE TABLE prefered_email(
    	email_id VARCHAR(255) NOT NULL,
    	user_id INT NOT NULL,
    	id INT AUTO_INCREMENT PRIMARY KEY,
    	FOREIGN KEY (user_id) REFERENCES account (id)
    		ON DELETE CASCADE
    		ON UPDATE CASCADE,
    	FOREIGN KEY (email_id) REFERENCES email (id)
    		ON DELETE CASCADE
    		ON UPDATE CASCADE
    ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8

    При попытке создать prefered_email получаю ошибку: Error: Can't create table './nightfol_print/prefered_phone.frm' (errno: 150)
    В чем может быть беда?
    Максимум что нашел, это что http://www.sql.ru/forum/actualthread.aspx?tid=626099 типы id должны быть одинаковы ... но они и есть. И все таблицы InnoDB.
    Подскажите, пожалуйста.

    SilentImp, 18 Января 2010

    Комментарии (7)
  4. SQL / Говнокод #2351

    −861.7

    1. 1
    2. 2
    3. 3
    select ...
    where ISNULL(e2e.ItemId, -1) = (case when @itemId < 1 then ISNULL(e2e.ItemId, -1) else @itemId end) 
    and ISNULL(e2e.LeftId, -1) = (case when @parentItemId < 1 then ISNULL(e2e.LeftId, -1) else @parentItemId) end

    workgss, 29 Декабря 2009

    Комментарии (3)
  5. SQL / Говнокод #2315

    −863.1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    FOR v_word IN 
            SELECT word FROM list                     
            AS word                              
        LOOP
        	UPDATE list SET pos=strpos(v_text, v_word) WHERE word=v_word;
        END LOOP;

    nomad, 23 Декабря 2009

    Комментарии (6)
  6. SQL / Говнокод #2305

    −125.1

    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
    create procedure [dbo].[pbsp_GetClientUsers]
    
    	(
            @ClientId int,
            @fname varchar(100),
            @lname varchar(100),
            @email varchar(150)
    	)
    
    AS
    	
    DECLARE @SQL varchar(1000)
    
    Set @SQL = 'Select TOP 500 *, tblRoles.title AS Role from tblUser INNER JOIN
            tbl_mtm_UserRoles ON tblUser.UserId = tbl_mtm_UserRoles.UserId INNER JOIN
            tblRoles ON tbl_mtm_UserRoles.RoleId = tblRoles.Id where tblUser.ClientId = ' + STR(@ClientId) + ' ' 
    
    if LEN(@fname) > 0
        Set @SQL = @SQL + ' AND tblUser.fName like ''' + @fname + '%'' '
        
    if LEN(@lname) > 0
        Set @SQL = @SQL + ' AND tblUser.lName like ''' + @lname + '%'' '
        
    if LEN(@email) > 0
        Set @SQL = @SQL + ' AND tblUser.Email like ''' + @email + '%'' '        	
        
    Set @SQL = @SQL + ' Order by tblUser.lName, tblUser.Fname'        	
    exec (@SQL)

    По долгу работы приходится местами переписывать унаследованный код. Я держалась неделю, но после этого шедевра все таки зарегилась на сайте и решила поделиться перлом. Интересно, что бы делали, если бы параметров еще штук пускай даже двадцать добавить?

    Крендель, 21 Декабря 2009

    Комментарии (20)
  7. SQL / Говнокод #2296

    −876

    1. 1
    INSERT INTO `x_world` VALUES (157282,-115,204,1,206320,'Жопа Волосатая',68797,'Чере',3277,'WarSky',595);

    Омг!
    Код взят с http://www.google.com/codesearch/p?hl=ru#Vh-Pv7tO-E0/map.sql&q=%D0%B6%D0%BE%D0%BF%D0%B0&sa=N& cd=8&ct=rc

    x0wl, 18 Декабря 2009

    Комментарии (4)
  8. SQL / Говнокод #2280

    −864.1

    1. 1
    2. 2
    3. 3
    4. 4
    select nvl2(view."DOC_TYPE", view."DOC_TYPE", '')||
               nvl2(view."SDOC", ', серия:'||view."SDOC", '')||
               nvl2(view."NDOC", ', номер:'||view."NDOC", '')|| 
    ... from view

    Это всё в Оракле

    asdqwezx, 14 Декабря 2009

    Комментарии (2)
  9. SQL / Говнокод #2257

    −161.4

    1. 1
    SELECT result=1 WHERE 1=0

    Тестируем что-то... Но что?

    bolkhovsky, 10 Декабря 2009

    Комментарии (5)
  10. SQL / Говнокод #2228

    −866.4

    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
    procedure ........
    is
        i                        integer := 1;
        j                        integer := 1;
        k                        integer := 1;
    begin
    ........
    
      for cI in i..4
      loop
        j := 1;
        for cJ in j..4
        loop
          k := 1;
          for cK in k..6
          loop
    /* Выпилено */
            k := k + 1;
          end loop; /* cK */
          j := j + 1;
        end loop; /* cJ */
        i := i + 1;
      end loop; /* cI */
    .........
    
    end;

    Вот такое вот использование циклов и переменных, при том, что переменные i, j и k используются в цикле (там где выпилено) так же, как были бы использованы переменные cI, cJ и cK.

    Muahaha, 05 Декабря 2009

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