Eftersom jag och många andra gillar lättläst kod tänkte jag att följande artikel kan vara läsvärd.
http://msdn.microsoft.com/sql/default.aspx?pull=/library/en-us/dnsqlpro04/html/sp04l9.asp
6 svar · 358 visningar · startad av Engine^
Eftersom jag och många andra gillar lättläst kod tänkte jag att följande artikel kan vara läsvärd.
http://msdn.microsoft.com/sql/default.aspx?pull=/library/en-us/dnsqlpro04/html/sp04l9.asp
Jag skulle aldrig formatera min kod på det sättet. Väldigt otydligt tycker jag. Såhär skriver jag:
SELECT
C.Name,
E.NameLast,
E.NameFirst,
E.Number,
ISNULL(I.Description,'NA') AS Description
FROM
tblCompany AS C
JOIN tblEmployee AS E ON C.CompanyID = E.CompanyID
LEFT JOIN tblCoverage AS V ON E.EmployeeID = V.EmployeeID
LEFT JOIN tblInsurance AS I ON V.InsuranceID = I.InsuranceID
WHERE
C.Name LIKE @Name
AND V.CreateDate > CONVERT(smalldatetime,'01/01/2000')
ORDER BY
C.Name,
E.NameLast,
E.NameFirst,
E.Number,
ISNULL(I.Description,'NA')
SELECT
@Retain = @@ERROR,
@Rows = @@ROWCOUNT
IF @Status = 0
SET @Status = @Retain
Förändringar
1: kommatechen direkt efter istället för radbrytning och sedan komma.
2: JOINS på en rad istället för flera
3: Radbrytning och tab efter SELECT, FROM, WHERE osv.
4: Efter IF, gör radbrytning och TAB (4 space)
Sedan har jag lite förtjust i att ge alias av typen t1, t2, t3 osv. Detta för att man ändå sällan vet vad en bokstav står . Däremot tycker jag att ögat tydligare ser t1, t2 osv än att ha olika bokstäver som representerar tabellerna. Men trots att det är vad jag gillar bäst så kan jag inte rekommendera det som en standard utan håller nog med där att man skall försöka korta ner det så som det är gjort här.
Såhär ser det ut med t1,t2 osv :)
SELECT
t1.Name,
t2.NameLast,
t2.NameFirst,
t2.Number,
ISNULL(t4.Description,'NA') AS Description
FROM
tblCompany AS t1
JOIN tblEmployee AS t2 ON t1.CompanyID = t2.CompanyID
LEFT JOIN tblCoverage AS t3 ON t2.EmployeeID = t3.EmployeeID
LEFT JOIN tblInsurance AS t4 ON t3.InsuranceID = t4.InsuranceID
WHERE
t1.Name LIKE @Name
AND t3.CreateDate > CONVERT(smalldatetime,'01/01/2000')
ORDER BY
t1.Name,
t2.NameLast,
t2.NameFirst,
t2.Number,
ISNULL(t4.Description,'NA')
SELECT
@Retain = @@ERROR,
@Rows = @@ROWCOUNT
IF @Status = 0
SET @Status = @Retain
Mycket prydligt Brimba. Jag skriver nästa likadant men fler radbrytningar vid join, AND/OR/ELSE samt paranterser på egen rad i where:
SELECT
C.Name,
E.NameLast,
E.NameFirst,
E.Number,
ISNULL(I.Description,'NA') AS Description
FROM
tblCompany AS C
[b] JOIN
tblEmployee AS E
ON
C.CompanyID = E.CompanyID
LEFT JOIN
tblCoverage AS V
ON
E.EmployeeID = V.EmployeeID
LEFT JOIN
tblInsurance AS I
ON
V.InsuranceID = I.InsuranceID
AND
V.InsuranceID = I.InsuranceID[/b]
WHERE
C.Name LIKE @Name
AND
V.CreateDate > CONVERT(smalldatetime,'01/01/2000')
[b] OR
(
C.Status = 10
AND
C.Name = 'Administrator'
)[/b]
ORDER BY
C.Name,
E.NameLast,
E.NameFirst,
E.Number,
ISNULL(I.Description,'NA')
SELECT
@Retain = @@ERROR,
@Rows = @@ROWCOUNT
IF @Status = 0
SET @Status = @Retain
Och så har man lärt sig något nytt ;D
Brimba skrev:
Jag skulle aldrig formatera min kod på det sättet. Väldigt otydligt tycker jag.
Förmodligen inte jag heller, men det är ju en bra början för dom som funderar på att skriva snyggare kod ;)
Punkterna är väl det jag tycker är mest intressant.
Mina har en tendens till att se ut ~ här:
SELECT C.Name,
E.NameLast,
E.NameFirst,
E.Number
FROM tblCompany AS C
JOIN tblEmployee AS E
ON( C.CompanyID = E.CompanyID )
LEFT JOIN tblCoverage AS V
ON( E.EmployeeID = V.EmployeeID )
LEFT JOIN tblInsurance AS I
ON( V.InsuranceID = I.InsuranceID
AND V.InsuranceID = I.InsuranceID )
WHERE C.Name LIKE @Name
AND ( V.CreateDate > CONVERT(smalldatetime,'01/01/2000')
OR V.CreateDate < CONVERT(smalldatetime,'01/01/2000')
OR ( V.CreateDate < CONVERT(smalldatetime,'01/01/2000')
AND V.CreateDate < CONVERT(smalldatetime,'01/01/2000') ) )
ORDER BY C.Name,
E.NameLast,
E.NameFirst,
E.Number
Oavsett så har ni ju alla flera bra sätt mot gängse klumpa ihop kod som många sql generatorer levererar.
Det börja ju komma fram en del formaterare så det kanske blir bättre med tiden.
Det viktigaste är väl att man själv förstår att det måste skrivas bättre(mer lättläst) kod.