Avatar billede duno Nybegynder
11. juli 2003 - 22:32 Der er 12 kommentarer og
1 løsning

Hent data fra 2 tabeller samtidig

Jeg har en tabel hvor alle mine venner står registreret med deres eget person id
(tabelnavn er "PersonTabel")

og en tabel hvor alle beskeder står i registreret efter personid
(tabelnavn er "venindlaeg")

Hvordan kan jeg få sat det rigtige navn på det rigtige personid...

håber i forstår.. eller skriv det..!!!

Takker!!
Avatar billede eagleeye Praktikant
11. juli 2003 - 22:34 #1
Du kan lave en INNER JOIN som denne:

SQL = "SELECT persontabel.navn, venindlaeg.* FROM venindlaeg INNER JOIN persontabel ON venindlaeg.personID = persontabel.ID"
Avatar billede duno Nybegynder
11. juli 2003 - 22:45 #2
kræver det ikke at der de samme kolonner i begge tabeller ???
Avatar billede eagleeye Praktikant
11. juli 2003 - 22:48 #3
Nej den ligger rækken fra persontabel ind sammen med rækken i venindlaeg hvor ID og brugerID er ens i de to tabeller.

persontabel
ID  navn
1  per
2  ole

venindlaeg
brugerID  besked    tilID
1        Hej ole    2


Så bliver det til:
navn  besked    tilID
per    Hej ole    2
Avatar billede duno Nybegynder
11. juli 2003 - 23:53 #4
jamen jeg bruger ikke noget SQL.... mine strenge ser således ud

indlaeg.Open "SELECT * FROM dagbogsindlaeg WHERE dato= date() ORDER BY dato " & tid, database

Hvad gør jeg så???
Avatar billede eagleeye Praktikant
11. juli 2003 - 23:57 #5
Dette er din SQL sætning i den linje.

"SELECT * FROM dagbogsindlaeg WHERE dato= date() ORDER BY dato " & tid
Avatar billede duno Nybegynder
12. juli 2003 - 00:14 #6
jeg har ændret på min database så det ser ud som følgende

Jeg har en tabel hvor alle mine venner står registreret med deres eget person id
(tabelnavn er "PersonTabel")

og en tabel hvor alle beskeder står i registreret efter personid
(tabelnavn er "dindlaeg")

Set indlaeg = Server.CreateObject ("ADODB.Recordset")
indlaeg.Open "SELECT * FROM dindlaeg WHERE dato= date() ORDER BY dato " & tid

SQL =  "SELECT persontabel.Fornavn, dindlaeg.* FROM dindlaeg INNER JOIN persontabel ON dindlaeg.personID = persontabel.ID"
%>

men hvordan henter jeg så noget fra den streng...

plejer jo at gøre sådan her:

<% = indlaeg.Fields("overskrift")%> osv....

men jeg får følgende fejl:

The connection cannot be used to perform this operation. It is either closed or invalid in this context.

er jeg helt ude at flyve.. elle giver det mening???
Avatar billede eagleeye Praktikant
12. juli 2003 - 00:21 #7
Det kan du stadig gøre på samme måde. Hvordan ser din kode ud. Det ser ud som om recordset indlaeg ikke er åbnet eller blevet lukket før det udskrives fra det eller på anden måde bruges.
Avatar billede duno Nybegynder
12. juli 2003 - 00:27 #8
det her er toppen

<%
tid = Request.QueryString("tid")
If Request.QueryString("Submit") = "" Then
    If tid = "" Then
        tid = "DESC"
    ElseIf tid = "DESC" Then
        tid = "ASC"
    Else
    tid = "DESC"
    End If
End If

soeg = Request.QueryString("soeg")
If soeg = "" Then
    soegestreng = "'%'"
Else
    soegestreng = "'%" & soeg & "%'"
End If

Set indlaeg = Server.CreateObject ("ADODB.Recordset")
indlaeg.Open "SELECT * FROM dindlaeg WHERE dato= date() ORDER BY dato " & tid

SQL =  "SELECT persontabel.Fornavn, dindlaeg.* FROM dindlaeg INNER JOIN persontabel ON dindlaeg.personID = persontabel.ID"
%>

og hele siden bliver afsluttet med

        <%
indlaeg.MoveNext
Wend
%> </td>
    </tr>
  <%
session.abandon

%>
</table>

<input type="hidden" name="tid" value="<% = tid%>">
<input type="hidden" name="id" value="<% = id%>">
</form>

</body>


der er 120 linier syntes at det er lige meget at lægge op her.. men hvis du vil have det så gør jeg det!
Avatar billede eagleeye Praktikant
12. juli 2003 - 00:30 #9
Prøv at lave disse linje:

Set indlaeg = Server.CreateObject ("ADODB.Recordset")
indlaeg.Open "SELECT * FROM dindlaeg WHERE dato= date() ORDER BY dato " & tid

SQL =  "SELECT persontabel.Fornavn, dindlaeg.* FROM dindlaeg INNER JOIN persontabel ON dindlaeg.personID = persontabel.ID"
%>


Om til:

Set indlaeg = Server.CreateObject ("ADODB.Recordset")
'indlaeg.Open "SELECT * FROM dindlaeg WHERE dato= date() ORDER BY dato " & tid

SQL =  "SELECT persontabel.Fornavn, dindlaeg.* FROM dindlaeg INNER JOIN persontabel ON dindlaeg.personID = persontabel.ID"

indlaeg.Open SQL, database

%>
Avatar billede duno Nybegynder
12. juli 2003 - 00:43 #10
jeg får den her fejl:

Microsoft JET Database Engine error '80040e10'

No value given for one or more required parameters.

/dagboeger/dagbogall2.asp, line 31

linie 31 er

den her - indlaeg.Open SQL, database


det står sådan her!!

Set indlaeg = Server.CreateObject ("ADODB.Recordset")
'indlaeg.Open "SELECT * FROM dagbogsindlaeg WHERE dato= date() ORDER BY dato " & tid

SQL =  "SELECT persontabel.Fornavn, dagbogsindlaeg.* FROM dagbogsindlaeg INNER JOIN persontabel ON dagbogsindlaeg.personID = persontabel.ID"

indlaeg.Open SQL, database
Avatar billede eagleeye Praktikant
12. juli 2003 - 00:46 #11
Fejlen betyder typisk at et kolonne nanv er forkert.
Prøv at tjekke om at tabel og kolonne navne er stavet rigtigt.
Jeg smutter for i aften.

prøv evt denne:

SQL =  "SELECT * FROM dagbogsindlaeg INNER JOIN persontabel ON dagbogsindlaeg.personID = persontabel.ID"


Eller hvor du har skrevet alle kolonnerne iselecten:

SQL =  "SELECT persontabel.Fornavn, dagbogsindlaeg.overskrift, dagbogsindlaeg.dato, dagbogsindlaeg.id  FROM dagbogsindlaeg INNER JOIN persontabel ON dagbogsindlaeg.personID = persontabel.ID"
Avatar billede duno Nybegynder
12. juli 2003 - 01:03 #12
jeg har nu dobbelt tjekket tabelnavne og PersonID er rigtig og PersonTabel er også rigtig skrevet...


hvis jeg skriver det sådan her::

Set indlaeg = Server.CreateObject ("ADODB.Recordset")
'indlaeg.Open "SELECT * FROM dagbogsindlaeg WHERE dato= date() ORDER BY dato " & tid

SQL = "SELECT * FROM dagbogsindlaeg INNER JOIN PersonTabel ON dagbogsindlaeg = PersonTabel.PersonID"

indlaeg.Open SQL, database
%>

får jeg følgende fejl...

Microsoft JET Database Engine error '80040e14'

Join expression not supported.

/dagboeger/dagbogall2.asp, line 31

Hvorfor???
Avatar billede eagleeye Praktikant
13. juli 2003 - 11:45 #13
Der mangler et ID eller persionID på tabllen dagbogsindlaed:

SQL = "SELECT * FROM dagbogsindlaeg INNER JOIN PersonTabel ON dagbogsindlaeg.MANGLERKOLONNEHER = PersonTabel.PersonID"


Eksvis:

SQL = "SELECT * FROM dagbogsindlaeg INNER JOIN PersonTabel ON dagbogsindlaeg.personID = PersonTabel.PersonID"
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