- 1
- 2
- 3
- 4
- 5
- 6
sBigDad varchar2(200) := '';
vaKids ids_va := ids_va();
vaDads ids_va := ids_va();
vaBigDads ids_va := ids_va();
vaGrandKids ids_va := ids_va();
vaTempKids ids_va := ids_va();
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−866
sBigDad varchar2(200) := '';
vaKids ids_va := ids_va();
vaDads ids_va := ids_va();
vaBigDads ids_va := ids_va();
vaGrandKids ids_va := ids_va();
vaTempKids ids_va := ids_va();
−864
Гавнокод --
SELECT * FROM Table1
WHERE [Id] not in
(
SELECT min([Id]) FROM Table1
WHERE [Code] in
(
SELECT [Code] FROM Table1
GROUP BY [Code] HAVING count([Code]) > 1
)
GROUP BY [Code]
)
and [Id] in
(
SELECT [Id] FROM Table1
WHERE [Code] in (
SELECT [Code] FROM Table1
GROUP BY [Code]
HAVING count([Code]) > 1
)
)
Нормальний варіант --
SELECT * FROM Table1 AS a
WHERE [Id] not in
(
SELECT min([Id]) FROM a_ListParam
WHERE a_ListParam.[Code] = a.[Code]
)
−858
IF ((SELECT 1 FROM DELETED AS D INNER JOIN INSERTED AS I ON (I.[id_Status]=D.[id_Status])) IS NULL )
такий от тригер стоїть на апдейт однієї таблички ...
ось так -- IF Insertes.id_Status != Deleted.Id_Status було б значно краще і лаконічніше.
−179
SELECT REPLACE(RTRIM(REPLACE(REPLACE(RTRIM(REPLACE(LTRIM(' 850.0000'),'0',' ')),' ','0'),'.',' ')),' ','.')
Совет, как убрать лишние нули после точки
−874
SELECT created_at, updated_at FROM user_childs WHERE `id`=.......
убейте меня за таймштамп user_childs.crated_at
−857
procedure xxx_procedure
is
-- lngIDVidPP Number;
sSQL varchar2(4000);
begin
sSQL := '';
sSQL := sSQL || ' Declare ';
sSQL := sSQL || ' lngIDVidPP Number; ';
sSQL := sSQL || ' lngColRec Number; ';
sSQL := sSQL || ' strTypeProc Varchar2(255); ';
sSQL := sSQL || ' BEGIN ';
sSQL := sSQL || ' for rec in (select f.param2 , A.idpp, pp.crastr, pp.cvector, a.param1, a.et, a.tet ';
sSQL := sSQL || ' from table1 e, T_IDPP@' || 'app' || '_' ||'xxx' || ' a, table2 f, ';
sSQL := sSQL || ' t_pp_card@' || 'app' || '_' || 'xxx' || ' pp, refitem r';
sSQL := sSQL || ' where ';
sSQL := sSQL || ' e.param1 = a.param1 ';
sSQL := sSQL || ' and e.id_building = F.ID_BUILDING ';
sSQL := sSQL || ' and F.FLOOR_NUMBER = a.et ';
sSQL := sSQL || ' and R.REFERENCEID = 2019 and R.ITEMID = F.ID_FLOOR_TYPE';
sSQL := sSQL || ' and R.CODE = a.tet';
sSQL := sSQL || ' and a.idpp = pp.cidpp)';
sSQL := sSQL || ' loop ';
sSQL := sSQL || ' lngColRec := 0; ';
sSQL := sSQL || ' lngIDVidPP := 0; ';
sSQL := sSQL || ' SELECT COUNT(*) INTO lngColRec FROM T_PROCESS_PP@' || 'app' || '_' || 'xxx || ' Z ';
sSQL := sSQL || ' WHERE Z.PPP_UNOM = rec.param1 AND Z.PPP_ET = rec.et AND Z.PPP_TET = rec.tet; ';
sSQL := sSQL || ' if lngColRec = 0 then ';
sSQL := sSQL || ' if BITAND(rec.crastr, 8) <> 0 and BITAND(rec.cvector, 8) <> 0 then ';
sSQL := sSQL || ' lngIDVidPP := 50868; ';
sSQL := sSQL || ' else ';
sSQL := sSQL || ' if BITAND(rec.crastr, 8) <> 0 then ';
sSQL := sSQL || ' lngIDVidPP := 50866; ';
sSQL := sSQL || ' else ';
sSQL := sSQL || ' lngIDVidPP := 50867; ';
sSQL := sSQL || ' end if; ';
sSQL := sSQL || ' end if; ';
sSQL := sSQL || ' update table2 f ';
sSQL := sSQL || ' set f.xx = rec.idpp, ';
sSQL := sSQL || ' f.xxx = lngIDVidPP, ';
sSQL := sSQL || ' f.xxxx = 54554 ';
sSQL := sSQL || ' where f.xxxxx = rec.id_floor; ';
sSQL := sSQL || ' else '; --if lngColRec > 0 then
sSQL := sSQL || ' strTypeProc := Null; ';
sSQL := sSQL || ' SELECT Y.PH_ACTION_KEY INTO strTypeProc ';
sSQL := sSQL || ' FROM T_PROCESS_HEAD@' || 'app' || '_' || 'SGP' || ' Y ';
sSQL := sSQL || ' WHERE ';
sSQL := sSQL || ' Y.PHID IN (SELECT X.PPP_PHID ';
...... 10 строк вырезано из-за ограничения 4000символов
sSQL := sSQL || ' if BITAND(rec.crastr, 8) <> 0 and BITAND(rec.cvector, 8) <> 0 then ';
sSQL := sSQL || ' lngIDVidPP := 50868; ';
sSQL := sSQL || ' else ';
sSQL := sSQL || ' if BITAND(rec.crastr, 8) <> 0 then ';
sSQL := sSQL || ' lngIDVidPP := 50866; ';
sSQL := sSQL || ' else ';
sSQL := sSQL || ' lngIDVidPP := 50867; ';
sSQL := sSQL || ' end if; ';
sSQL := sSQL || ' end if; ';
sSQL := sSQL || ' update table3 f ';
sSQL := sSQL || ' set f.ID_PLANE_G = rec.idpp, ';
sSQL := sSQL || ' f.id_plane_scan = lngIDVidPP, ';
sSQL := sSQL || ' f.id_status_plane = 54552 ';
sSQL := sSQL || ' where f.param1 = rec.param1; ';
sSQL := sSQL || ' ELSE ';
sSQL := sSQL || ' update table3 f ';
sSQL := sSQL || ' set f.id_status_plane = 54552 ';
sSQL := sSQL || ' where f.param1 = rec.param1; ';
sSQL := sSQL || ' END IF; ';
sSQL := sSQL || ' end if; '; --if lngColRec > 0 then
sSQL := sSQL || ' end loop;';
sSQL := sSQL || ' null;';
sSQL := sSQL || ' end;';
EXECUTE IMMEDIATE sSQL;
dbms_output.put_line ('Процедура xxx_procedure успешно создана');
EXCEPTION
WHEN OTHERS THEN dbms_output.put_line('Ошибка создания xxx_procedure. ' || SQLERRM);
end;
В связи с NDA названия изменены.
−862
SELECT wine_name,wine_year,cost FROM Wines
INNER JOIN storage ON wines.wine_ID=storage.wine_ID
INNER JOIN pricelist ON storage.wine_ID=pricelist.wine_ID
WHERE fabric_ID=(SELECT fabric_ID FROM fabrics WHERE Name="Toscana Italy")
AND count>0 ORDER BY wine_year ASC LIMIT 1,1000;
SELECT wine_name,cost,count FROM wines
INNER JOIN storage ON wines.wine_ID=storage.wine_ID
INNER JOIN vendorprices ON storage.wine_ID=vendorprices.wine_ID
WHERE count > 0 ORDER BY wine_name DESC LIMIT 1,1000;
SELECT wine_name,cost,count FROM wines
INNER JOIN storage ON wines.wine_ID=storage.wine_ID
INNER JOIN vendorprices ON storage.wine_ID=vendorprices.wine_ID
WHERE count = 0 ORDER BY wine_name DESC LIMIT 1,1000;
Извращаюсь как могу лишь бы запросы напоминали двух-критериальные. Впрочем таковыми они от этого не становятся. Думаю еще добавить по три-четыре подзапроса и побольше джойнов, жаль условных конструкций не знаю(собственно сутки-двое изучаю SQL)
Институт сказал "Надо", студент ответил... ну впрочем неважно что ответил, но сделал...
−857
SELECT CONCAT( IF(10>DAY(date),"0",""),DAY(date),".",IF(10>MONTH(date),"0",""),MONTH(date)) as date
FROM table_name
Выборка дат из mysql в нормальном виде))
−873
SELECT users.nick,group.name FROM users,group WHERE user.id='$id' AND group.id=user.group;
Это мой код. Мне сказали что это говнокод, и порекомендовали спросить здесь.
В чём именно говнокодость, и как надо писать правильно?
−852
[CompanyName] text null,
[Address] text null,
[Comment] varchar(255),
Вот такая оригинальная архитектура таблицы БД :-)