webForumDet fria alternativet

Gör aen inner join för att hämta två olika värden

ASP

10 svar · 631 visningar · startad av Gardell

Medlem sedan juli 2002688 inlägg
Frågan#1

Hej!

Jag kan inte särskilt mycket om dessa SQL-strängar, men jag antar att jag behöver göra en inner join på en annan tabell.

Det jag ska göra är först och främst att lista olika Albumnamn ur en tabell vid namn tblAlbum. Detta namn skickar jag sedan vidare med querystring till en sida som plockar fram bilder ur en tabell vid namn tblAktiviteter där "fldAlbum" är samma som det medskickade värdet i querystringen. Men, att skicka med ett namn i querystringen känns inte så bra, samtidigt som jag nu även måste ha ett värde ur tblAlbum. Så det bästa är väl att skicka med ett ID (det som finns för vart och ett albumnamn i tblAlbum) och med det plocka fram namnet på albumet och sedan sortera ut posterna i det albumet i tblAktiviteter. Nu blev det rörigt kanske..

Det jag vill ha är en inner join på tblAlbum som plockar fram namnet på albumet med det medskickade ID:et, med det namnet ska jag sedan plocka fram posterna i tblAktiviteter där fldAlbum är lika med namnet på albumet. Samtidigt ska jag också plocka ut beskrivningen på albumet, fldDesc från fldAlbum..

Min nuvarande kod:

"SELECT * FROM tblAktiviteter WHERE fldAlbum = '" & strShowAlbum & "' ORDER BY fldCount DESC"

Hoppas nån förstår vad jag menar.. :)

Medlem sedan nov. 20014 054 inlägg
#2
SELECT * FROM tblAlbum INNER JOIN tblAktiviteter a2 ON a1.fldAlbum=a2.fldAlbum WHERE a1.ID=" & idnumret & "

Kanske?

Medlem sedan mars 20032 667 inlägg
#3

Ska Fredde Mannens exempel fungera får du ge tabellen tblAlbum aliaset a1 i din sql-fråga.

SELECT * FROM tblAlbum a1
INNER JOIN tblAktiviteter a2 
ON a1.fldAlbum=a2.fldAlbum 
WHERE a1.ID=" & idnumret

Byt gärna * mot en lista på fältnamnen du vill hämta.

Medlem sedan nov. 20014 054 inlägg
#4

huhu.. se där missade visst denna karl något.. första aliaset! :r

Medlem sedan juli 2002688 inlägg
#5

Tack så mycket! :)

Hur plockar jag nu ut ett speciellt värde ur den ena eller andra tabellen? Vanligtvis kör jag ju t.ex. objRS("fldAlbum").

Medlem sedan mars 20032 667 inlägg
#6

Finns ju lite olika alternativ. Antingen gör du som vanligt. Eller om du har kolumner i båda tabellerna som heter samma kan du hämta på position eller alias.

SELECT a1.bleb, a2.bleb FROM table a1 ...

Då blir a1.bleb objRS(0) och a2.bleb objRS(1). Så fortsätter det genom hela selectlistan.

Eller:

SELECT a1.bleb AS xxx, a2.bleb AS yyy FROM table a1 ...

Då blir det objRS("xxx") och objRS("yyy").

Medlem sedan juli 2002688 inlägg
#7

Tack för svaret!

Jag förstår.. nästan. Jag provade att göra som vanligt, men får då "Item cannot be found in the collection corresponding to the requested name or ordinal.". Det andra med position/alias, var ska jag lägga det? I SQL-satsen kanske?

I övrigt så kanske mitt upplägg är lite lurigt..

<div class="topContDiv">

Bilder ur <%=objRS("fldAlbum")%>.<br /><%=objRS("fldDesc")%>

</div>

<% Do Until objRS.EOF %>

<div>

<img src="../<%=objRS("fldFilename")%>" alt="<%=objRS("fldFilename")%>" /><br /><%=objRS("fldDesc")%>

</div>

<%
objRS.MoveNext
	Loop
%>

Sådär ser det ut. De två första innan Do.Until ska tas från tblAlbum, och resten från tblAktiviteter..

Medlem sedan mars 20032 667 inlägg
#8

Första kolumnen i din sql-fråga blir objRS(0), den andra objRS(1), den tredje objRS(2), den fjärde objRS(3). OSV.

När du vill skriva ut den andra kolumnen i din select-lista skriver du alltså:

<%=objRS(1)%>

eller

response.write objRS(1)

Jag gav dig ett exempel på alias ju. I din sql-fråga ger du en kolumn ett unikt tillfälligt namn med "AS namnet". Sedan skriver du ut det som jag visade:

<%=objRS("namnet")%>

eller

response.write objRS("namnet")
Medlem sedan juli 2002688 inlägg
#9

Stort tack K@llen för att du hjälper mig! :) Men ojoj, har försökt ta itu med det här igen nu.. Men jag förstår inte mycket av det där alias och sånt, verkar finnas så många kombinationer för den här lösningen.. Har provat fram och tillbaka men det blir inte rätt.. :(

Min SQL-sats just nu:

strSQL = "SELECT * FROM tblAlbum a1 INNER JOIN tblAktiviteter a2 ON a1.fldAlbum=a2.fldAlbum WHERE a1.fldCount=" & strShowID & ""

Och det jag vill är att med IDet plocka fram ett specifikt namn ur kolumnen fldAlbum från tabellen tblAlbum. Resten, kolumnerna fldDesc och fldFilename ska gå i en loop från tabellen tblAktiviteter..

Medlem sedan juni 200032 967 inlägg
#10

Och på vilket sätt fungerar det inte nu?

Läs också emissions tänkvärda tråd

Medlem sedan juli 2002688 inlägg
#11

Jag vet inte hur jag ska få ut värdena ur databasen, lyckas inte formulera det hela rätt..
Där ser man.. så sant så!

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
114 ms — ändringar (db)