Jeg har nedenstående SQL sætning, som fungerer, men er langsom - er der en
smartere metode?
Der hentes data fra to tabeller tA og tB
tA's felter: ID ( autonumber ), Active og Title
tB's felter: ID ( tA's værdi ), fieldName, fieldContent
I tB kan der være et ubekendt antal rows med [ID = en tA autonumber værdi],
men hvor fieldName altid er forskellige.
Til en entry i tA kan der således oprettes et vilkårligt antal "variable"
baseret på et fieldName i tB, disse "variable" har noget indhold defineret i
fieldContent. Hvis der fx. er oprettet 10 sådanne "variable" for en entry i
tA findes der i tB 10 rows alle med ID=tA's autonumber værdi, men med
forskellige værdier i fieldName og fieldContent. For at hente dette indhold
ud og samtidig have styr på hvilket fieldContent der hører til en bestemt
fieldName anvendes følgende SQL sætning ( simplificeret ):
SELECT tA.ID, tA.Title
tB_0.fieldContent AS elm1, tB_1.fieldContent AS elm2, tB_2.fieldContent AS
elm3,
tB_3.fieldContent AS elm4, tB_4.fieldContent AS elm5, tB_5.fieldContent AS
elm6,
tB_6.fieldContent AS elm7, tB_7.fieldContent AS elm8, tB_8.fieldContent AS
elm9,
tB_9.fieldContent AS elm10
FROM tA INNER JOIN
tB tB_0 ON tA.ID = tB_0.ID INNER JOIN
tB tB_1 ON tA.ID = tB_1.ID INNER JOIN
tB tB_2 ON tA.ID = tB_2.ID INNER JOIN
tB tB_3 ON tA.ID = tB_3.ID INNER JOIN
tB tB_4 ON tA.ID = tB_4.ID INNER JOIN
tB tB_5 ON tA.ID = tB_5.ID INNER JOIN
tB tB_6 ON tA.ID = tB_6.ID INNER JOIN
tB tB_7 ON tA.ID = tB_7.ID INNER JOIN
tB tB_8 ON tA.ID = tB_8.ID INNER JOIN
tB tB_9 ON tA.ID = tB_9.ID
WHERE (tA.Active=1) AND (tB_0.fieldName = 'elm1')
AND (tB_1.fieldName = 'elm2') AND (tB_2.fieldName = 'elm3') AND
(tB_3.fieldName = 'elm4')
AND (tB_4.fieldName = 'elm5') AND (tB_5.fieldName = 'elm6') AND
(tB_6.fieldName = 'elm7')
AND (tB_7.fieldName = 'elm8') AND (tB_8.fieldName = 'elm9') AND
(tB_9.fieldName = 'elm10')
Den fungerer som sagt, men er ret langsom ... så måske der findes en
smartere måde? Bemærk at tabel strukturen skal bibeholdes.
Hilsen
Steffen
|