webForumDet fria alternativet

Hämta fler fält från annan tabell...

Databaser & SQLur Databashanterare & SQL

7 svar · 412 visningar · startad av k0ffe

k0ffeMedlem sedan maj 2003352 inlägg
#1

Hallu. Jag har lite problem när jag vill visa en bild från varje bildarkiv i bildarkivets index.

Jag har denna fråga nu:

SELECT *, (SELECT COUNT(ID) FROM bilder WHERE bildarkiv.ID = bilder.arkivID) as Bilder FROM bildarkiv ORDER BY bildarkiv.datum desc

Med jag vill alltså, förutom antalet bilder, också få tag i fältet "bild" ur bilder-tabellen så jag kan visa denna i mitt index vid bildarkivets rubrik.

Nån som är bättre på SQL än mig?
Tacksam för svar!

emissionMedlem sedan dec. 19996 721 inlägg
#2

En variant som kanske duger..

SELECT ba.ID,ba.datum,MAX(b.bild) as bild, COUNT(*) as Bilder FROM bilder b, bildarkiv ba WHERE ba.ID = b.arkivID GROUP BY ba.ID,ba.datum ORDER BY ba.datum desc
k0ffeMedlem sedan maj 2003352 inlägg
#3

Tack! Det fungerar... Men varför har du kommandot "MAX"? Jag är usel på SQL.

Om jag vill slumpa en bild istället? RAND?

emissionMedlem sedan dec. 19996 721 inlägg
#4

k0ffe skrev:

Tack! Det fungerar... Men varför har du kommandot "MAX"?

För att vi på något sätt måste begränsa urvalet så att endast en bild från varje kategori kommer med. Med MAX får vi den bild vars bildnamn har det högsta värdet (eftersom det är en text blir det den som kommer sist i alfabetisk ordning). Med MIN kan vi vända på steken.

k0ffe skrev:

Om jag vill slumpa en bild istället? RAND?

Då blir det en hel del mer avancerat. Vad använder du för "databasmotor"? Access? MySQL?

k0ffeMedlem sedan maj 2003352 inlägg
#5

Ok Ok... Till det här är det Access

emissionMedlem sedan dec. 19996 721 inlägg
#6

Detta kräver lite hjälp från ASP-sidan, och jag har utgått från att du har en ID-kolumn i bildtabellen också.

Randomize
seed = (CInt(1000 * Rnd) + 1) * -1 
SQL="SELECT ba.ID,ba.datum,mid(MAX(left(cstr(int(9000*rnd(b.ID*" & seed & ")+1000)),4) + b.bild),5) as bild, COUNT(*) as Bilder FROM bilder b, bildarkiv ba WHERE ba.ID = b.arkivID GROUP BY ba.ID,ba.datum ORDER BY ba.datum desc"
k0ffeMedlem sedan maj 2003352 inlägg
#7

Tack, det fungerar! Men måste det verkligen behöva bli såhär "krångligt"? :)

emissionMedlem sedan dec. 19996 721 inlägg
#8

Jajamen!

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