Quan ens trobem que he fer una consulta d'una taula on per una determinada opció cal saber si està marcada o no, moltes vegades ho fem de la següent manera:
ColParametres=TornaTotsElsParametres()
for each Parametre in ColParametres
if MiraSiElClientTeElParametreMarcat(codi_client, codi_parametre) then
'parametre marcat
else
'parametre NO marcat
endif
next Parametre
Mostrant la taula de la següent manera:
Això comporta el problema que la funció MiraSiElClientTeElParametreMarcat() també fa un accés a la base de dades, i fem aquest accés per cada paràmetre de la llista. Per tant accedim a la base de dades tantes vegades com paràmetres tenim a la taula base.
Una millor manera de fer-ho, suposant que la taula "Paràmetres" té els camps "codi_client", "codi_parametre"; seria fent una consulta única de la següent manera:
SELECT Codi_Parametre, Descripcio
(SELECT Codi_Parametre FROM Parametres_Clients
WHERE Codi_Client = 'codidelclient'
AND codi_parametre=Parametres.Codi_Parametre) AS Codi_Parametre_Client"
FROM Parametres
LLavors el codi quedaria com:
if tb!Codi_Parametre_Client Is Null then
'parametre No marcat
else
'parametre marcat
endif