webForumDet fria alternativet

Att strukturera SQL-frågor (visuellt)

1 svar · 236 visningar · startad av sabbacus

sabbacusMedlem sedan juli 2002630 inlägg
#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 :)

LaspMedlem sedan juli 200012 980 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.

127 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)