webForumDet fria alternativet

Att strukturera SQL-frågor (visuellt)

Databaser & SQL

1 svar · 236 visningar · startad av sabbacus

Medlem sedan juli 2002630 inlägg
Frågan#1

Tjenamoss. Jag har en liten fundering på hur man ska strukturera upp sin SQL-kod så att den blir så "human-readable" som möjligt.

Om vi tar följande query:
SELECT tabell0.*, tabell4.*, tabell3.status AS Acl, tabell2.user_rights, tabell4.retry_count AS tabell4RetryCount FROM tabell0 LEFT JOIN tabell4_user AS tabell4 ON(tabell4.user_id=tabell0.user_id) LEFT JOIN tabell3 ON (tabell3.acl_id=tabell4.acl_id) LEFT JOIN tabell2 ON (tabell0.mailbox_id=tabell2.mailbox_id) WHERE (tabell0.extension='xxx' AND tabell4.pin_code='yyy') OR (tabell4.user_name='xxx' AND tabell4.pwd='yyy')

Så är den i sin nuvarande form mer eller mindre oläslig, men om man slänger in lite tabbar och radbrytningar får man följande:

SELECT 
	tabell0.*, 
	tabell4.*, 
	tabell3.status AS Acl, 
	tabell2.user_rights, 
	tabell4.retry_count AS tabell4RetryCount 
FROM 
	tabell0 
	
	LEFT JOIN tabell4_user AS tabell4 
		ON ( tabell4.user_id=tabell0.user_id ) 
		
	LEFT JOIN tabell3 
		ON ( tabell3.acl_id=tabell4.acl_id ) 
	
	LEFT JOIN tabell2 
		ON ( tabell0.mailbox_id=tabell2.mailbox_id ) 

WHERE 
	(
		tabell0.extension='xxx' 
			AND 
		tabell4.pin_code='yyy'
	) 
	OR 
	(
		tabell4.user_name='xxx' 
			AND 
		tabell4.pwd='yyy'
	)

vilket är en rejäl förbättring.

Hursomhelst så har det säkerligen forskats lite i detta och nu frågar jag er:

* Finns det någon vedertagen (de facto-)standard för hur man ska ställa upp sina sql-satser för att de ska bli så lättlästa som möjligt?
* Hur gör ni?
* Är min uppställning helt åt fanders?

nu har ni något att bita i :)

Medlem sedan juli 200012 978 inlägg
#2

Klart hedervärt försök. Inte bara att göra den mer läsbar utan naturligtsvis är det lättare att återanvända en sådan SQL sats.
Nu har vi ju olika tillfällen men om det är en kod som skall användas av andra är detta mycket viktigt.
Vissa verktyg bygger kod åt ditt exempelhåll.

255 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)