Avatar billede tele_lucien Nybegynder
08. december 2002 - 19:09 Der er 13 kommentarer og
1 løsning

Hvordan søger jeg i flere tabeller på en gang?

Hej med jer!

Hvordan søger jeg i flere tabeller på en gang?

Min kode som den ser ud nu?

Dim SearchString As String = Replace(Request.QueryString("keyword"), "'", "''")

        Dim strSQL As String = "SELECT VareId, Varenr, Varenavn, Farve, Materiale, Specs, Pris, Leverandør FROM Vare "
        strSQL += "WHERE VareId LIKE '%" & SearchString & "%'"
        strSQL += "OR Varenr LIKE '%" & SearchString & "%'"
        strSQL += "OR Varenavn LIKE '%" & SearchString & "%'"

Mvh Lucien
Avatar billede tele_lucien Nybegynder
08. december 2002 - 19:10 #1
BTW............. Jeg har en Kunde tabel og en Ordre tabel, som relatere til hindanden på et kundenr.
Avatar billede janus_007 Nybegynder
08. december 2002 - 19:37 #2
SELECT v.VareId, v.Varenr, v.Varenavn, v.Farve, v.Materiale, v.Specs, v.Pris, v.Leverandør FROM Vare v
INNER JOIN Ordre o ON v.VareID = o.VareID
INNER JOIN Kunde k ON o.kundenr = k.kundenr

og så din evt. where-clause herefter
eks. WHERE v.VareId LIKE '%345634%'

Hvad er det egentlig du vil om jeg må spørge, umiddelbart er det meget optimistisk at lave sådanne LIKE's set med performance briller på :O)
Avatar billede tele_lucien Nybegynder
08. december 2002 - 21:13 #3
Hej Janus...... hvad mener du med optimistisk med at lave LIKE's?

Jeg har bare lavet en søgefunktion, og så vil jeg lave den så den søger i to eller flere tabeller. Det er det hele,-

Er der en federe måde at lave en søgefunktion på?

Mvh Lucien
Avatar billede arnvig Nybegynder
09. december 2002 - 09:20 #4
hvis du vil søge i flere tabeller, men se resultatet som en tabel, skal du anvende "UNION", bare husk at resultatet skal være samme format for alle del-selects.

Select resultat
from tableA
where <exp1>
Union
Select resultat
from tableB
where <exp2> ;
Avatar billede tele_lucien Nybegynder
09. december 2002 - 09:29 #5
OKay........det har jeg sgu aldrig hørt om! UNION.......

Dim strSQL As String = "SELECT VareId, Varenr, Varenavn, Farve, Materiale, Specs, Pris, Leverandør FROM Vare "
        strSQL += "WHERE VareId LIKE '%" & SearchString & "%'"
        strSQL += "OR Varenr LIKE '%" & SearchString & "%'"
        strSQL += "UNION SELECT * FROM Kunde"
        strSQL += "WHERE Kundenr LIKE '%" & SearchString & "%'"
        strSQL += "OR Adresse LIKE '%" & SearchString & "%'"
        Dim objAdapter As New SqlDataAdapter(strSQL, objConnection)

Er det okai doki sådan her?

Mvh Lucien
Avatar billede janus_007 Nybegynder
09. december 2002 - 09:43 #6
tele lucien>> Ja det har jeg forstået, men skriv lige hvilke felter du vil søge på i flere af dine tabeller og hvordan dine relationer er imellem tabellerne!

arnvig>> ja det er jo essensen ved en union, den kan bare ikke lige bruges i det her tilfælde!. For det første kræver det (som du korrekt skriver) at felterne skal være ens, for det andet kræver det jo stadig en relation imellem tabellerne. Den får man jo ik bare forærende fordi man bruger en union ;O)
Avatar billede tele_lucien Nybegynder
09. december 2002 - 09:51 #7
Hej Janus..........Okay kommer her!

Jeg har en Vare tabel, med et felt der hedder varenr (varenr er ikke primarykey, det er vareid, men det betyder ikke noget vel?), som er i relation med en anden tabel der hedder Ordrelinie.
Avatar billede janus_007 Nybegynder
09. december 2002 - 09:52 #8
OKI... Og hvilke felter vil du søge på ?
Avatar billede tele_lucien Nybegynder
09. december 2002 - 09:55 #9
Ups.....

SELECT VareId, Varenr, Varenavn, Farve, Materiale, Specs, Pris, Leverandør FROM Vare

SELECT Ordrenr, Varenr, Antal FROM Ordrelinie
Avatar billede janus_007 Nybegynder
09. december 2002 - 10:07 #10
SELECT v.VareId, v.Varenr, v.Varenavn, v.Farve, v.Materiale,
v.Specs, v.Pris, v.Leverandør, ol.Ordrenr, ol.Antal
FROM Vare v
INNER JOIN Ordrelinie ol ON v.Varenr = ol.Varenr
WHERE v.Varenavn LIKE '%vingummi%'
OR v.Farve LIKE '%rød%'

Osv....
HÅber du kan følge mig, ellers spørg igen
Avatar billede tele_lucien Nybegynder
09. december 2002 - 10:42 #11
den siger følgende:

Line 1: Incorrect syntax near 'v'

min kode:

Dim SearchString As String = Replace(Request.QueryString("keyword"), "'", "''")

        Dim strSQL As String = "SELECT v.VareId, v.Varenr, v.Varenavn, v.Farve, v.Materiale, v.Specs, v.Pris, v.Leverandør, ol.Ordrenr, ol.Antal FROM Vare v"
        strSQL += "INNER JOIN Ordrelinie ol ON v.Varenr = ol.Varenr"
        strSQL += "WHERE v.Varenavn LIKE '% & SearchString & %'"
        strSQL += "OR v.Varenr LIKE '%" & SearchString & "%'"
        strSQL += "OR v.Varenavn LIKE '%" & SearchString & "%'"
        strSQL += "OR v.Farve LIKE '%" & SearchString & "%'"
        strSQL += "OR v.Materiale LIKE '%" & SearchString & "%'"
        strSQL += "OR v.Specs LIKE '%" & SearchString & "%'"
        strSQL += "OR v.Pris LIKE '%" & SearchString & "%'"
        strSQL += "OR v.Leverandør LIKE '%" & SearchString & "%'"
        strSQL += "OR ol.Ordrenr LIKE '%" & SearchString & "%'"
        Dim objAdapter As New SqlDataAdapter(strSQL, objConnection)
Avatar billede janus_007 Nybegynder
09. december 2002 - 10:44 #12
kan du ikke prøve at skrive sql'en ud uden at eksekvere den og poste stringen her :O)
Avatar billede tele_lucien Nybegynder
09. december 2002 - 10:47 #13
kommer her:

SELECT v.VareId, v.Varenr, v.Varenavn, v.Farve, v.Materiale, v.Specs, v.Pris, v.Leverandør, ol.Ordrenr, ol.Antal FROM Vare vINNER JOIN Ordrelinie ol ON v.Varenr = ol.VarenrWHERE v.Varenavn LIKE '% & SearchString & %'OR v.Varenr LIKE '%111%'OR v.Varenavn LIKE '%111%'OR v.Farve LIKE '%111%'OR v.Materiale LIKE '%111%'OR v.Specs LIKE '%111%'OR v.Pris LIKE '%111%'OR v.Leverandør LIKE '%111%'OR ol.Ordrenr LIKE '%111%'
Avatar billede tele_lucien Nybegynder
09. december 2002 - 10:53 #14
det virker nu! Skulle bare rykke det JOIN der lidt så det ikke hang sammen med det v der!

Mange tak for hjælpen Janus.

You got the points! :-)
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
Computerworld tilbyder specialiserede kurser i database-management

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