Avatar billede mini41 Nybegynder
14. november 2003 - 10:00 Der er 17 kommentarer og
1 løsning

Hvordan defineres to tabeller?

Er der nogen der har en løsning på hvordan jeg gør det ?
Her er koden som den virker idag :

Der søges på tabellen travelmate200 men jeg ønsker der OGSÅ søges på travelmate210 og andre.

Det er det samme felt der skal søges på i alle tabeller.

Jeg kan godt adskille FROM syntaxen med tegnen , men så søger den kun i den første tabel. Sådan her:

strSQL = "SELECT * FROM travelmate200,travelmate210 WHERE"




strSQL = "SELECT * FROM travelmate200 WHERE"
strSQL = strSQL & " (partnummer = '" & strKeyword & "')"
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=d:\websider\global\comgrosinfo.dk\comgrosinfo.dk\db\acer.mdb"
Avatar billede hossein Nybegynder
14. november 2003 - 10:11 #1
Har de tabller en fælles felt, hvis ja så skal du bruge join, f ex:
strSQL = "SELECT travelmate200.*, travelmate210.* FROM travelmate200,travelmate210 WHERE travelmate200.ID = travelmate210.travelmate200_ID "
Avatar billede mini41 Nybegynder
14. november 2003 - 10:21 #2
Alle tabeller er opbygget end med endlydende felter.
Avatar billede mini41 Nybegynder
14. november 2003 - 10:22 #3
Hvordan vil det i praksis se ud ?
Avatar billede hossein Nybegynder
14. november 2003 - 10:32 #4
Antal af join linier er altid 1 mindre af antalet af tabeller dvs. hvis du har 4 tabeller så har du 3 join linie, med join linie mener jeg sådan noget:
travelmate200.ID = travelmate210.travelmate200_ID

Man joiner, for at finde relevante data for f ex samme person i alle tabeller derfor har man brug for en fælles værdi i alle tabeller f ex hvis jeg har en tabel "Personer" og en anden "Adresser" så skal jeg finde adresserne for alle personer sådan:

Personer
ID  Navn  Efternavn
1    Hans    Hansen
2    Jens    Jensen


Adresser

ID  Adr1        postdis  personer_ID
1    hghghhvej    3050      2
2    gfgfgfGade    3500        1

Så kan jeg joine:
select *.personer, *.adresser where ID.personer = Personer_ID.Adresser

De felter som du vil joine skal ha samme datatype.
Avatar billede hossein Nybegynder
14. november 2003 - 10:34 #5
Rettes til:
Så kan jeg joine:
select *.personer, *.adresser From personer, Adresser where ID.personer = Personer_ID.Adresser
Avatar billede morticuz Nybegynder
14. november 2003 - 10:47 #6
Lav to udtræk på en gang

set rs  = conn.execute("SELECT * FROM Personer")
set rs2 = conn.execute("SELECT * FROM Adresser WHERE Person_ID="& rs("id"))

Hvis du forstår?! :)
Avatar billede mini41 Nybegynder
14. november 2003 - 11:07 #7
morticuz:

Nu er det sådan at jeg har 41 tabeller så jeg tror denne løsning er for svær.


hossein:

Kan du stille scriptet op så jeg kan afprøve det ?
Som test kan bruges:

Tabeller: travelmate200 og travelmate210
felt er det samme for begge : partnummer

Jeg kan ikke lige helt se hvad du mener men hvis du har tid til at at vise det med to tabeller kan jeg selv finde ud af resten :)
Avatar billede hossein Nybegynder
14. november 2003 - 11:13 #8
select *.travelmate200 , *.travelmate210 From personer, Adresser where partnummer.travelmate200 = partnummer.travelmate210

41 tabeller, det er godt nok store system du har :)
Vil du så joine alle de 41 tabeller på en gang?
Avatar billede mini41 Nybegynder
14. november 2003 - 11:45 #9
Jeg kan ikke rigtigt se fornuften i scriptet.

I min select siger jeg jo FROM travelmate WHERE partnummer osv.

Alle mine tabeller hedder travelmate200, travelmate210, travelmate220 osv. og feltet hedder partnummer.
Avatar billede mini41 Nybegynder
14. november 2003 - 11:46 #10
Det skal være sådan at findes værdien af partnummer ikke i den første tabel søges der i den næste osv.
Avatar billede hossein Nybegynder
14. november 2003 - 13:19 #11
Nah, så er det jo nemmer:
strSQL = "SELECT * FROM minTable1, minTable2, minTable3 WHERE minFelt LIKE '%" & strInputSearch & "%' OR Felt LIKE '%" & strInputSearch & "%';"
Avatar billede mini41 Nybegynder
14. november 2003 - 13:53 #12
nope, det giver en execute error, her en den tilrettede kode:


strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then
Response.Clear
Response.Redirect("acersøgning.asp")
Else
strKeyword = Replace(strKeyword,"'","''")
End If
strSQL = "SELECT * FROM travelmate200, travelmate210, travelmate220 WHERE partnummer LIKE '%" & strKeyword & "%' OR partnummer LIKE '%" & strKeyword & "%';"
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=d:\websider\global\comgrosinfo.dk\comgrosinfo.dk\db\acer.mdb"
Conn.Open DSN
Conn.Execute(strSQL)
Set rs = Conn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Avatar billede hossein Nybegynder
14. november 2003 - 15:45 #13
Du skal lige rette din forbindelse og execute:
strDBPath = Server.MapPath("acer.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & ";"
strSQL = "SELECT * FROM travelmate200, travelmate210, travelmate220 WHERE partnummer LIKE '%" & strKeyword & "%' OR partnummer LIKE '%" & strKeyword & "%';"
Set rs = Conn.Execute(strSQL)

Feltet partnummer findes med samme navn i alle tabeller derfor skal du tilføje tabelnavnet i din kritere:
travelmate200.partnummer LIKE '%" & strKeyword & "%' OR
travelmate210.partnummer LIKE '%" & strKeyword & "%' OR osv...
Avatar billede mini41 Nybegynder
14. november 2003 - 16:19 #14
systax error
Avatar billede hossein Nybegynder
15. november 2003 - 10:42 #15
Hvad er det for en error? hvilken linie?
Avatar billede mini41 Nybegynder
15. november 2003 - 13:37 #16
I denne linie:


strSQL = "SELECT * FROM travelmate200, travelmate210, travelmate220 WHERE partnummer LIKE '%" & strKeyword & "%' OR partnummer LIKE '%" & strKeyword & "%';"
Avatar billede hossein Nybegynder
15. november 2003 - 14:27 #17
Hvilken datatype har feltet "partnummer"?
Avatar billede mini41 Nybegynder
17. november 2003 - 14:39 #18
Jeg opgiver dette og fletter mine tabeller :)

Points for din store hjælp
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