- 1
- 2
- 3
SELECT `score` FROM `score`
WHERE `score` = (SELECT DISTINCT `score` FROM `score`
ORDER BY `score` DESC LIMIT 1,1)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−165
SELECT `score` FROM `score`
WHERE `score` = (SELECT DISTINCT `score` FROM `score`
ORDER BY `score` DESC LIMIT 1,1)
Про именование таблиц и полей...
−170
CREATE TRIGGER TR_Table1 ON Table1
INSTEAD OF INSERT
AS
INSERT INTO Table1
SELECT * FROM INSERTED
Диалект MS SQL
INSTEAD OF INSERT - триггер, отменяющий вставку и передающий список значений, указанных в запросе в псевдотаблице INSERTED.
т.е. автор вместо того чтобы позволить северу вставлять строк решил каждый раз вставлять их лично.
−167
CREATE TABLE users (
--...
active VARCHAR(1) NOT NULL DEFAULT 'N'
−164
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, ограничить количество изображений на новость.
−165
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 строк подобного кода.
−169
LEFT JOIN ($regions_table LEFT JOIN ($states_table LEFT JOIN
мы встроили вам лефт джоин в лефт джоин чтобы лефтжоинить лефт джоин...
−864
sResult:= '';
select code||' '||h.longname into sResult
from tbl1 mo, tbl2 ob, g_cli c, tbl3 h
where mo.m_dep_id = ob.obj_dep_id and mo.m_id = ob.obj_id
and ob.dep_id = nDepId and ob.id = nId
and mo.cli_dep_id = c.dep_id and mo.cli_id = c.id
and c.id = h.id and c.dep_id = h.dep_id and p_operday between h.FROMDATE and h.TODATE;
return sResult;
exception
when NO_DATA_FOUND then return null;
when TOO_MANY_ROWS then
for rec in( select distinct code as cli_code, h.longname as cli_name
from tbl1 mo, tbl2 ob, g_cli c, tbl3 h
where mo.m_dep_id = ob.obj_dep_id and mo.m_id = ob.obj_id
and ob.dep_id = nDepId and ob.id = nId
and mo.cli_dep_id = c.dep_id and mo.cli_id = c.id
and c.id = h.id and c.dep_id = h.dep_id and dT between h.FROMDATE and h.TODATE)
loop
if nvl(length(sResult),0) = 0 then
sResult:= rec.cli_code||' '||rec.cli_name;
else
sResult:= sResult||', '||rec.cli_code||' '||rec.cli_name;
end if;
end loop;
return sResult;
when others then return null;
−863
SELECT *
FROM session s
WHERE s.platform IS NOT NULL
GROUP BY s.user_id
HAVING MAX(s.open_utc)
Но хоть можно понять что сказать пытались, и на том спасибо.
−863
select top 1 v.Id
from dbo.Verification v
where v.ApplicationId = a.Id
and v.ResultId = 'D69E0B3A-C5CA-42D0-A8CA-FA7FF63BC414'
and not exists (
select 1 from Verification vo
where vo.ApplicationId = v.ApplicationId
and vo.ResultId = v.ResultId
and vo.Id != v.Id
and vo.Position > v.Position
)
MS SQL. Видимо, автору не рассказали об order by
−860
SELECT
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D1 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D1 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D2 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D2 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D3 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D3 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D4 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D4 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D5 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D5 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D6 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D6 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D7 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D7 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D8 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D8 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D9 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D9 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D10 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D10 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D11 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D11 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D12 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D12 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D13 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D13 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D14 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D14 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D15 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D15 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D16 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D16 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D17 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D17 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D18 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D18 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D19 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D19 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D20 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D20 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D21 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D21 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D22 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D22 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D23 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D23 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D24 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D24 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D25 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D25 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D26 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D26 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D27 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D27 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D28 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D28 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D29 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D29 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D30 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D30 = S_KODGR.K_KOD)) +
iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D31 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D31 = S_KODGR.K_KOD)) AS H_ALL,
GR.ID_GRAF
FROM GRAF_RAB AS GR
WHERE GR.GOD = 2014
AND GR.K_T_GR = 1
1) Говеная архитектура БД: В базе месяц лежит в одной таблице с полями D1, D2, D3 и т.д. Потому нельзя просто взять и одним запросом связать две таблицы, а приходится делать 31 подзапрос
2) Говеня БД: используется access, который не может и шагу ступить без vba. В итоге функция nz, написанная на vba просто не видна OleDbDataAdapter-у и приходится использовать iif. И 31 подзапрос превращается в 62
3) Надо получить значения из двух полей. 62 подзапроса превращаются в 124(Здесь только одно поле. В проекте код в 2 раза длиннее)