/ 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
MAX(date)
Fra : Thomas Lindgaard


Dato : 08-05-06 16:15

Hejsa

Jeg har en database, hvor jeg ønsker at finde den sidste hændelse på
tværs af 2 tabeller, hvor status er forskellig fra 'Completed'.

Tabel 1 indeholder en række ID'er (foreign keys fra forskellige
tabeller), hvoraf jeg skal bruge det ene længere henne i processen, og
tabel 2 indeholder resten - herunder det dato-felt som fortæller,
hvornår hvert enkelt event har fundet sted. Der er et antal events pr. ID.

Foreløbig har jeg (indtil andet er bevist) fået løst opgaven ved at
oprette et view, som indeholder par af ID og sidste dato for events i
gruppen bestemt af ID:

SELECT t1.id, <de andre ID'er fra tabel_1>, max( t2.scheduled_start )
FROM tabel_1 t1
INNER JOIN tabel_2 t2 ON t1.id = t2.id
WHERE t2.status <> 'Completed'
GROUP BY t1.id

Lad dette view hedde v. Det vil indeholde rækker fra tabel_1 med et
dato-felt klistret i enden.

I andet trin kan jeg så i stedet for at bruge min oprindelige tabel_1
bruge viewet v, idet jeg ved, at v kun indeholder tupler, for hvilke
sidste status _ikke_ var 'Completed'.

En select i stil med følgende:

SELECT *
FROM <tabeller INNER JOIN'et via ID'er fra v>

vil nu give mig alle events fra grupper (bestemt af t1.id) - dvs. alle
events fra grupper, hvor sidste status var forskellig fra 'Completed'.

Ovenstående virker vist - men kan det virkelig ikke gøres lidt smartere?
Jeg vil gerne undgå at skulle lave viewet - til gengæld gør det ikke
helt så meget, om query'en kører lynhurtigt, idet outputtet fra den
bliver smidt i en ny tabel, som så er den, der bliver brugt fra
interfacet (data opdateres hver morgen men er statisk i løbet af dagen).

Nogen ideer? (nogen som forstår min beskrivel? :)

--
Mvh.
/Thomas

 
 
Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste