18. juni 2004 - 09:23Der er
18 kommentarer og 1 løsning
kan jeg udtrække data fra 2 tabeller
jeg prøver at udtrække data fra 2 tabeller men kan ikke få det til at virke. ? kan jeg godt udtrække data fra en tabel der har mellemrum i tabelnavnet f.eks. select * from hej med dig - tabel where
jeg bruger følgende kode <html> <title>Hente data fra database</title> <head> </head> <body> <dl> <% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\home\jucdk\db\Kursusstyring.mdb" Conn.Open DSN
' Hent fra databasen afhængig af værdien id fra URL strSQL = "Select * From begivenheder,Tidsplaner for kursusafgift - tabel Where begivenhedsid = " & Request.Querystring("id") Set rs = Conn.Execute(strSQL)
Det kan du godt. Du skal bare have defineret hvordan tabellerne hænger sammen. et eks.
select bruger.*, cityzip.* from (bruger inner join cityzip on cityzip.zip=bruger.zip) where bruger='fennec' eller: select bruger.*, cityzip.* from bruger, cityzip where cityzip.zip=bruger.zip and bruger='fennec'
På denne måde har man en tabel med bynavne og postnumre, men man gemmer kun postnummeret på brugeren.
Også en sidste ting. Brug aldrig mellemrum (space) i dine navne på tabeller/kolonner. brug _ eller træk dem sammen (Kursus_Afgift, KursusAfgift)
jeg hælder mere til fennec løsning da data fra de to tabeller hører sammen og jeg mangler selvfølgelig også Response.Write "<dt>Underviser:</dt><dd>" & rs("Fornavn") & "</dd>" hvis i kan hjælpe kan jeg godt friste med lidt eksta point
Eller med left join i stedet for inner join alt efter hvordan du ønsker din join skal virke. inner join tager kun med hvis der er poster som er i begge kolonne hvorimod left join til alle fra Begivenheder og dem i undervisere hvor join-ledet passer.
jeg har prøvet at skrive de forespørgslerne på forskelige måder, men lige meget hjælper det. :( i access databasen er posten begivenhedsid primærnøgle i tabellen Begivenheder og fremednøgle i tabellen Undervisere. jeg har prøvet med følgende. <html> <title>Hente data fra database</title> <head> </head> <body> <dl> <% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\home\jucdk\db\Kursusstyring.mdb" Conn.Open DSN ' Hent fra databasen afhængig af værdien id fra URL strSQL = "select * from begivenheder Where BegivenhedsId = " & Request.Querystring("id") 'strSQL = "select * from begivenheder left join Undervisere on Begivenheder.BegivenhedsId=Undervisere.BegivenhedsId Where BegivenhedsId = " & Request.Querystring("id") 'strSQL = "select Begivenheder.* ,Undervisere.* from begivenheder left join undervisere on Begivenheder.BegivenhedsId=undervisere.BegivenhedsId Where BegivenhedsId = " & Request.Querystring("id") Set rs = Conn.Execute(strSQL) Response.Write "<dt>Titel:</dt><dd>" & rs("begivenhedsnavn") & "</dd>" Response.Write "<dt>Sted:</dt><dd>" & rs("StedNavn") & " " & rs("Startdato") & "</dd>" Response.Write "<dt>Underviser:</dt><dd>" & rs("Fornavn") & "</dd>" Conn.Close Set Conn = Nothing %>
</dl> <p><a href="liste.asp">Retur til listen</a></p> </body> </html>
tabellen begivenheder indeholder idnr på underviseren og den kan jeg godt få vist ved at kalde begivenheder men jeg er interesseret i at få vist navn adresse med mere på underviseren alt efter hvilken begivenhed der bliver kaldt.........hvis det giver mere mening.?
ok der manger en angivelse af tabel navnet i denne SQL sætning i where delen:
strSQL = "select * from begivenheder left join Undervisere on Begivenheder.BegivenhedsId=Undervisere.BegivenhedsId Where BegivenhedsId = " & Request.Querystring("id")
Sådan her:
strSQL = "select * from begivenheder left join Undervisere on Begivenheder.BegivenhedsId=Undervisere.BegivenhedsId Where begivenheder.BegivenhedsId = " & Request.Querystring("id")
Så prøv at tilføje det til SQL de kolonne du vil havde med:
strSQL = "select begivenheder.*, Undervisere.fornavn from begivenheder left join Undervisere on Begivenheder.BegivenhedsId=Undervisere.BegivenhedsId Where begivenheder.BegivenhedsId = " & Request.Querystring("id")
Tjek evt. at du har en post i Undervisere som passer med den i Begivenheder tabellen.
jo det er det og hvis jeg kører den nye forespørgsel så for jeg følgende fejl Undervisernavn: ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
/dbkursus.asp, line 23
Synes godt om
Ny brugerNybegynder
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.