webForumDet fria alternativet

"Förena" 2 tabeller

ASP

6 svar · 316 visningar · startad av per-v

Medlem sedan maj 200161 inlägg
Frågan#1

Hej!

Jag fick precis en databas (access) skickad till mig, den innehåller 2 st tabeller med exakt samma fält så när som på primärnyckeln.

Tabellerna:

tabell 1:
-------------
email (primärnyckel) - namn - adress - postnr - ort

tabell 2:
-------------
id (primärnyckel) - namn - adress - postnr - ort

Det är tänkt att infon från båda tabellerna ska loopas ut på en sida rakt av.

Problem är dock att jag inte har den blekaste om hur jag ska gå tillväga för att lyckas "förena" dessa två tabeller i en loop eller vad man nu ska kalla det.

Resultatet är tänkt att se ut som typ:

namn           	adress        	postnr       	ort
-------------	------------- 	-------------	-------------
tabell1.namn	tabell1.adress	tabell1.postnr	tabell1.ort
tabell2.namn	tabell2.adress	tabell2.postnr	tabell2.ort
tabell1.namn	tabell1.adress	tabell1.postnr	tabell1.ort

Jag hoppas att jag inte var/är helt otydlig, tacksam för all hjälp jag kan få!

per.

Medlem sedan sep. 20026 425 inlägg
#2
SELECT tabell1.namn AS o_name, tabell2.namn AS t_name,tabell1.adress AS o_adr,tabell2.adress AS t_adr,tabell1.postnr AS o_pn,tabell2.postnr AS t_pn,tabell1.ort AS o_ort,tabell2.ort AS t_ort

Sedan använder du respektive fälts alias när du skriver ut det, och kollar vilket du ska skriva ut:

<%
If Len(Rs("o_name"))>0 Then Response.Write Rs("o_name") Else Response.Write Rs("t_name")
If Len(Rs("o_adr"))>0 Then Response.Write Rs("o_adr") Else Response.Write Rs("t_adr")

...
...
%>

Hoppas det ej blev alltför oklart.

Medlem sedan maj 200161 inlägg
#3

Tack för hjälpen m_soderlund! Jag hittade dock något som heter UNION, så jag testade det, ställde en fråga i Access och det funkde som en klocka!

strSQL = "SELECT namn, adress, postnr, ort FROM tabell1 UNION SELECT namn, adress, postnr, ort FROM tabell1"

Nu ska jag bara försöka få det att funka på www också ;)

Får ett fel:

ADODB.Recordset error '800a0bb9' 
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/sida.asp, line 45

Rad 45:

rs.Open strSQL, oConn, adOpenStatic, adLockPessimistic, adCmdText

Fråga mig inte varför jag har just adOpenStatic osv, jag har inte den blekaste hur dom där fungerar, så det finns väl en risk att jag tabbat mig där...

Medlem sedan juni 200032 967 inlägg
#4

Nu vet jag inte riktigt vad du ska göra med ditt recordset, men det allra enklaste sättet att fylla ett recordset med data är:

set rs = oConn.Execute (strSQL)

Du behöver inte innan dess i koden heller skapa rs med server.createobject, utan det skapas och fylls på samma gång.

Mvh,

Medlem sedan maj 200161 inlägg
#5

Tack @nders!... jag fick det att funka med nått liknande!

rs.Open "SELECT namn, adress, postnr, ort FROM tabell1 UNION SELECT namn, adress, postnr, ort FROM tabell1", dbConn
Medlem sedan aug. 20003 575 inlägg
#6

Samma som innan bara att du tog bort adOpenStatic, adLockPessimistic, adCmdText.

Medlem sedan maj 200161 inlägg
#7

Tänk vad enkelt det kan va :)

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)