Avatar billede cyberkox Nybegynder
16. maj 2006 - 12:31 Der er 11 kommentarer og
1 løsning

Join Tables i access

Hey

Jeg har to tabeller: bruger og admin
I tabellen bruger er brugerne listet op med navn, osv osv og en kolonne der hedder admin. Den indeholder værdierne fra 1-6.

I tabellen admin er der 2 kolonner:
| ID | navn |

Nu vil jeg gerne have kædet det sammen sådan, at jeg får navnet ud af ADMIN tabellen, som svarer til brugerens ADMINID.

Kan dette lade sig gøre ?
Avatar billede ellebaek Nybegynder
16. maj 2006 - 15:31 #1
select navn from admin INNER JOIN bruger on admin.ID = bruger.adminid

Med denne sql burde du få navnet ud fra admin tabellen... Hvis du så skal have en kondition på, så sætter du bare til sidst...
fx where bruger.navn = '" &request.form("brugernavn")& "'"

..Ellebæk!
Avatar billede Slettet bruger
16. maj 2006 - 15:32 #2
- ja det kan sagtens lade sig gøre...
men jeg har lige et par spørgsmål...:
- hvad skal vi lave vores opslag efter i tabellen "bruger" eller skal alle brugere bare listes?
- og hvilke dataformat har "ID" i tabellen admin?

noget a la det her:

<%
set rs = Conn.execute("select * from bruger ORDER BY navn")
if NOT rs.EOF then
do until rs.EOF
bruger_ADMINID = rs("admin")
bruger_navn = rs("navn")
set admin = Conn.execute("select * from admin WHERE ID=" & bruger_ADMINID & "")
if NOT admin.EOF then
admin_navn = admin("navn")
end if
admin.close
set admin=nothing
response.write "navn: " & bruger_navn & "<br>" & admin_navn & "<br>"
rs.movenext
loop
end if
rs.close
set rs=nothing
%>

- eller har jeg fuldstændig misforstået det hele?

\Dan
Avatar billede cyberkox Nybegynder
16. maj 2006 - 18:08 #3
Alle brugerne skal listes op, ja. Og kolonnen, admin i bruger-tabellen, er et tal, der gerne skulle svare til ID'et i admin-tabellen.

Den metode du viser, dannielsen, har jeg også gjort, men jeg tænkte om ikke man kunne lave noget vha af JOIN (jeg kender intet til join, endnu ;-), så man ikke skal lave to forespørgsler for at få info frem?
Avatar billede eagleeye Praktikant
16. maj 2006 - 20:41 #4
Du kan lave det med left join.


sql = "select * from brugere left join admin where brugere.adminid = admin.id"


har du nogle kolonne i begge tabeller der hedder det samme må du lave lidt aliaser ekspelvis hvis du har kolonnen navn i begge tabeller:


sql = "select brugere.navn as brugernavn, admin.navn as adminnavn, id, adminid from brugere left join admin where brugere.adminid = admin.id"



så lave et loop som udskriver det:


do while not rs.EOF
  response.write "navn: " & rs("brugernavn") & " : " & rs("adminnavn") & "<br>"
  rs.movenext
loop
Avatar billede cyberkox Nybegynder
17. maj 2006 - 08:20 #5
Aha, lige hvad jeg søgte, eagleeye. Kan du forklaree lidt nærmere hvad LEFT join går ud på ift. blot JOIN.
Avatar billede cyberkox Nybegynder
17. maj 2006 - 17:01 #6
Hmm;
strsql = "select * from bruger left join admin where bruger.adminid = admin.id"

Gir fejl:
Microsoft JET Database Engine error '80040e14'

Syntax error in FROM clause.

/medlemmer.asp, line 12
Avatar billede eagleeye Praktikant
17. maj 2006 - 18:13 #7
LEFT join tager alt fra fra den frøste tabel her bruger og så JOIN'er den nr. 2 admin  på de steder for "join ledet": bruger.adminid = admin.id passer.

Har du to kolonner som hedder det samme??
Eller så prøv at sætte klamme omkring admin:


strsql = "select * from bruger left join [admin] where bruger.adminid = admin.id"
Avatar billede cyberkox Nybegynder
18. maj 2006 - 00:06 #8
Den melder stadig fejl. Jeg synes ikke jeg har to kolonner der er ens?
Avatar billede eagleeye Praktikant
18. maj 2006 - 20:28 #9
hov jeg kan se jeg har skrevet forkert der skal stå ON hvor der ståt where :)


strsql = "select * from bruger left join [admin] on bruger.adminid = admin.id"


on bruges til at bestemme hvordan database skal joine de to tabeller, altså hvilek to kolonner der skal være ens for den joiner.
Avatar billede cyberkox Nybegynder
18. maj 2006 - 22:10 #10
Aha, ja, det virker meget logisk :)
Avatar billede cyberkox Nybegynder
19. maj 2006 - 12:43 #11
Smid et svar, Eagleeye. Du ska jo lige have dine point ;-)
Avatar billede eagleeye Praktikant
19. maj 2006 - 20:16 #12
Ok, så her et svar ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester