/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Inner Join af samme tabel
Fra : Steffen Lieberkind


Dato : 17-04-03 22:18

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




 
 
Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste