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

    −164

    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
    select top 1000
    		[ObjectType] = N'Scv',
    		[SourceCodeId] = d.[IDOBJ], 
    		[ParameterName] = N'DlitZamera',
    		[DateTime] = l1.[VALUEDATE], 
    		[Value] = l1.[PERIOD], 
    		[vValue] = NULL, [IsLive] = 1
    from tm_mn_c8_kust.[dbo].[Lg] as l1
    left join tm_mn_c8_kust.[dbo].[Lg] as l2 on (l1.IDOBJ=l2.IDOBJ and l1.ValueDATE<l2.ValueDATE)
    inner join tm_mn_c8_kust.[dbo].[TiiDat] as d on d.IDDAT = l1.IDOBJ
    where 	l1.TYPEOBJ=330 and 
    		l1.IDPAR=15 and
    		l2.ValueDATE is null

    Задание:
    Выбрать последнее добавленное значение из таблицы и заджойнить данные из другой таблицы

    Решение:
    Join таблицы с самой собой по условию l1.ValueDATE<l2.ValueDATE и взять только строки, которые не сростились :)
    (Строки 9 и 13)

    SatanicArmpit, 21 Мая 2015

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

    −161

    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
    select distinct cast(null as integer) NZAP,d_ext_uslug_napr_zag.id_doc_public NNAPR,d_ext_uslug_napr_zag.date_doc DNAPR, 
     d_ext_uslug_napr_zag.form_med_pom  FOMP, tab_lpu.lpu_ext_code MONAPR, tab_struct_obos_unit.code_ffoms PMONAPR, cast (:lpu_ext_code  as varchar(20)) MO, TSOU1.code_ffoms PMO, 
     tab_other_strings.code_external VPOLIS,patients.polis_s SPOLIS,patients.polis_n NPOLIS, 
     tab_msk.smocod SMO, tab_msk.TF_OKATO TER, 
     d_ext_uslug_napr_zag.fam FAM, d_ext_uslug_napr_zag.nam IM, d_ext_uslug_napr_zag.otch OT, d_ext_uslug_napr_zag.male P, d_ext_uslug_napr_zag.born DR, 
     patients.TELEFON TEL, 
     d_ext_uslug_napr_zag.ds_osn_mkb DSNAPR, TAB_PLACE_PARAM.profil_koek_for_foms PROFK,tab_profile.CODE_PROFILE_EGISZ_PRFO PROFO, 
     TAB_PLACE_PARAM.profil_koek_for_foms PROFKNAPR, 
     tab_profile.CODE_PROFILE_EGISZ_PRFO  PROFONAPR,
     users.snils MEDRAB, 
     med_kart.id_kart_public NKART, med_kart.ds_priem_mkb DS,           
     d_ext_uslug_napr_zag.date_plan_gosp  DPGOSP, 
     MED_KART.date_vipis_planed DPOGOSP  
     from d_ext_uslug_napr_zag 
     left outer join patients on patients.id_pac=d_ext_uslug_napr_zag.pac_id and patients.dae>='31.12.9999'    
     left outer join tab_other_strings on tab_other_strings.id_string=patients.polis_type             
     left outer join tab_profile on tab_profile.id_profile=d_ext_uslug_napr_zag.TARGET_PODR_PROFILE   
     left outer join R_USERS_DOLGN on R_USERS_DOLGN.ID_KD=d_ext_uslug_napr_zag.NAPR_DOCTOR_KD_ID 
     left outer join users on users.id_user=d_ext_uslug_napr_zag.napr_doctor_user_id                  
     left outer join tab_msk on tab_msk.id_msk=patients.msk                                           
     left outer join tab_place on tab_place.id_place=d_ext_uslug_napr_zag.napr_place_id               
     left outer join tab_struct_obos_unit on tab_struct_obos_unit.lpu_id=d_ext_uslug_napr_zag.from_lpu_id 
     left outer join tab_struct_obos_unit TSOU1 on TSOU1.id_obos_unit=tab_place.obos_unit_id          
     left outer join d_diagn on d_diagn.id_doc = d_ext_uslug_napr_zag.id_doc                          
     left outer join med_kart on med_kart.pac_id = patients.id_pac 
     and med_kart.dt_coming>=:O_BEG and med_kart.dt_coming<=:O_END 
     left outer join d_dvig on d_dvig.med_kart=med_kart.id_kart and d_dvig.type_dvig=31                   
      left outer join  tab_place_param on tab_place_param.id_place=d_dvig.target_place                    
           and tab_place_param.dab<=:O_BEG and tab_place_param.dae>:O_BEG                                 
     left outer join tab_struct_place_har on tab_struct_place_har.place_id=tab_place.id_place         
     left outer join tab_lpu on tab_lpu.lpu_code= med_kart.napr_lpu 
     where d_ext_uslug_napr_zag.IS_INCOMING=0 and d_ext_uslug_napr_zag.pay_id=1  --IS_INCOMING=0 только исходящие,      
     and d_ext_uslug_napr_zag.date_doc>=:O_BEG and d_ext_uslug_napr_zag.date_doc<=:O_END

    Обратите внимание на tab_place_param
    Также стоит отметить, что в таблице d_ext_uslug_napr_zag имеются поля med_kart_id, lpu_id, obos_unit_id.
    Ещё: obos_unit — на самом деле подразделение lpu, их может быть несколько. Автор почему-то об этом не подумал.

    tucvbif, 29 Апреля 2015

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

    −162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    CREATE TABLE `invait` (
    	`invait` VARCHAR(128) NOT NULL COLLATE 'utf8_general_ci',
    	`vladelec_id` VARCHAR(128) NOT NULL COLLATE 'utf8_general_ci',
    	`klient_id` VARCHAR(128) NOT NULL COLLATE 'utf8_general_ci',
    	`datavr` TEXT NOT NULL COLLATE 'utf8_general_ci',
    	`dohod` VARCHAR(1024) NOT NULL COLLATE 'utf8_general_ci',
    	`idinv` INT(11) NOT NULL AUTO_INCREMENT
    )
    COLLATE='latin1_swedish_ci'
    ENGINE=MyISAM
    AUTO_INCREMENT=79;

    имена полей прекрасны

    podvzbzdnul, 20 Апреля 2015

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

    −161

    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
    $iq = tep_db_query('/* Вывод детальной информации по заданному неоригинальному изделию (ART_ID) */
    					/* Общая информация об изделии */
    					/*	ART_ARTICLE_NR - Номер артикула */
    					/*	SUP_BRAND - Название производителя изделия */
    					/*	ART_COMPLETE_DES_TEXT - Описание изделия */
    					SELECT
    						ART_ID,
    						ART_ARTICLE_NR,
    						ART_SEARCH_NR,
    						SUP_BRAND,
    						TD_DES_TEXTS.TEX_TEXT AS ART_COMPLETE_DES_TEXT,
    						products_id,
    						products_price,
    						products_quantity
    					FROM
    					   TD_ARTICLES
    						INNER JOIN TD_DESIGNATIONS ON TD_DESIGNATIONS.DES_ID = ART_COMPLETE_DES_ID
    						INNER JOIN TD_DES_TEXTS ON TD_DES_TEXTS.TEX_ID = TD_DESIGNATIONS.DES_TEX_ID
    						INNER JOIN TD_SUPPLIERS ON SUP_ID = ART_SUP_ID
    					    JOIN products ON products_search_art = ART_SEARCH_NR
    					    JOIN td_suppliers_to_price ON products_brand = stp_price_brand AND products_price_id = stp_price_id AND ART_SUP_ID = stp_td_sup_id
    					WHERE
    						ART_ID = '.$art['LA_ART_ID'].' AND
    						TD_DESIGNATIONS.DES_LNG_ID = 16; ');

    "Отправлю ка я в СУБД немного комментариев, чтобы ему было проще разобраться что тут происходит"

    CyberKiller, 12 Апреля 2015

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

    −170

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    CREATE TABLE `static_answers` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `question_id` int(11) unsigned NOT NULL,
      `title` varchar(255) NOT NULL,
      `is_correct` enum('0','1') NOT NULL,
      `created_at` int(11) unsigned NOT NULL,
      `updated_at` int(11) unsigned NOT NULL,
      `hits` int(10) unsigned NOT NULL DEFAULT '0',
    ...
    )

    Смотрим объявление поля is_correct
    ... Взорвали мозг пытаясь понять, почему: ожидаемый chance = (!фактический chance) в запросе:
    SELECT
    a.`id`, is_correct, IF(`is_correct`, 1, 0) chance
    FROM `static_answers` a
    WHERE q.`id` = 3268

    dwsVad, 12 Марта 2015

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

    −165

    1. 1
    2. 2
    3. 3
    SELECT `score` FROM `score`
    WHERE `score` = (SELECT DISTINCT `score` FROM `score`
      ORDER BY `score` DESC LIMIT 1,1)

    Про именование таблиц и полей...

    smart, 11 Февраля 2015

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

    −170

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    CREATE TRIGGER TR_Table1 ON Table1
    INSTEAD OF INSERT
    AS
    INSERT INTO Table1
    SELECT * FROM INSERTED

    Диалект MS SQL
    INSTEAD OF INSERT - триггер, отменяющий вставку и передающий список значений, указанных в запросе в псевдотаблице INSERTED.

    т.е. автор вместо того чтобы позволить северу вставлять строк решил каждый раз вставлять их лично.

    German_1984, 23 Января 2015

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

    −167

    1. 1
    2. 2
    3. 3
    CREATE TABLE users (
      --...
      active VARCHAR(1) NOT NULL DEFAULT 'N'

    Lowezar, 19 Января 2015

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

    −164

    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
    CREATE TABLE NEWS (
     ID INT NOT NULL AUTO_INCREMENT
     , NEWS_NAME VARCHAR(300) NOT NULL
     , NEWS_SHORT_NAME VARCHAR(80) NOT NULL
     , NEWS_TEXT VARCHAR(40000) NOT NULL
     , NEWS_SHORT_TEXT VARCHAR(400) NOT NULL
     , NEWS_IMG_1 VARCHAR(60)
     , NEWS_IMG_2 VARCHAR(60)
     , NEWS_IMG_3 VARCHAR(60)
     , NEWS_IMG_4 VARCHAR(60)
     , NEWS_IMG_5 VARCHAR(60)
     , NEWS_IMG_6 VARCHAR(60)
     , NEWS_IMG_7 VARCHAR(60)
     , NEWS_IMG_8 VARCHAR(60)
     , NEWS_IMG_9 VARCHAR(60)
     , NEWS_IMG_10 VARCHAR(60)
     , NEWS_DATE DATE
     , PRIMARY KEY (ID)
    );

    Таблица новостей из одной очень крутой и никому неизвесной CMS на java.
    Сейчас автор думает над тем что делать если пользователяю надо будет загрузить 11 изображений, варианты: увеличить количество полей до 15, ограничить количество изображений на новость.

    lisiy50, 15 Января 2015

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

    −165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    update #tmpTours1 set pricelink = ('<a target="_blank" title="Прайс-лист на ближайшие заезды" href="../pricelist/Complex.aspx?country=' + ltrim(str(cnkey)) + '&tour=' + ltrim(str(tourkey)) + '&dateFrom=' + dbo.mwFirstTourDate(tlkey) + '">' + ltrim(str(tourprice)) + ' ' + tourrate + '</a>')
      
     set @sql = N'select * from #tmpTours1 where tourprice is not null and quota <> case ' + ltrim(str(@quotaYes)) + ' when -1 then -10 else 0 end '
     if len(@sort) > 0
      set @sql = @sql + ' order by ' + @sort
    	print @sql
     exec sp_executesql @sql

    Хранимочки по 1000 строк подобного кода.

    tablecell, 15 Декабря 2014

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