Avatar billede mrjowns Novice
04. september 2001 - 11:13 Der er 9 kommentarer og
1 løsning

Søgning i db med to kriterier!

Lad os antage at jeg har to tabeller i samme db (LevAdr.mdb).
Tabel 1(Leverandor): Navn, Reference, Produkt, Pris.
Tabel 2(Adresser): Vejnavn, Postnummer, Bynavn, Tlf.

Se nu http://www.5star.dk/eksperten

Jeg vil gerne have at samtlige kolonnenavne (fra Leverandor og Adresser) står i både kriterie 1 og 2. Dvs. at der f.eks. skal kunne søges på produkt og telefonnummer samtidig!

Et tomt søgefelt i kriterie 2 skal kunne godtages!

Vælger man Tlf i begge kristeier skal der komme en advarselsboks: \"Dine søgekriterier kan ikke accepteres\"

Er det noget der er nogen der kan hjælpe med? Lav det evt. sådan at siden kalder (POST) sig selv og resultatet vises (helst med mulighed for at søge igen i toppen).

--jowns--
Avatar billede ldanielsen Nybegynder
04. september 2001 - 11:59 #1
Er der ikke en relation mellem de to tabeller?
Skal der vises et samlet resultat; Navn og adresse på dem der opfylder kravene?

Der mangler i så fald en primær nøgle i Leverandor, og en sekundær nøgle i Adresser (Hvis vi antager at en Leverandor kan have flere adresser)

Det skal lige være på plads inden jeg kan lave søgningen
Avatar billede mrjowns Novice
04. september 2001 - 12:14 #2
Nej, en Leverandor kan ikke have flere adresser! Primærnøgle (Leverandor): Navn
Sekundærnøgle (Adresser): Tlf

Kan man ikke gøre det på den måde?

--jowns--
Avatar billede ldanielsen Nybegynder
04. september 2001 - 12:26 #3
Hvis hver leverandør kun kan have én adresse, hvorfor laver du så to tabeller?

Og hvis der ikke er en relation mellem de to, hvordan ved du så hvor hver enkelt leverandør bor?

Det du kunne gøre, hvis du VIL have to tabeller, er følgende:

Leverandor:
ID, autonummerering (Primær nøgle)
Navn, tekst
Reference, tekst
Produkt, tekst
Pris, Langt Heltal

Adresser:
ID, autonummerering (Primær nøgle)
LeverandorID, Langt Heltal
Vejnavn, tekst
Postnummer, tekst
Bynavn, tekst
Tlf, tekst

Så vi en leverandør fx. få nummer 27, og du vil så skrive hans adresse i Adresser, og skrive 27 i feltet LeverandørID.

På den måde kan hver leverandør have flere adresser.

Men nu er vi langt fra spm., og det er fordi det ser ud som om du vil lave to helt uafhængige søgninger. Præcis som hvis du ville finde \"alle danske trækfugle, og alle bilmærker, der indeholder \"sp\", listet op i skøn forening\"

Jeg må nok vide lidt mere, eller du må tænke lidt mere over hvordan dine data er struktureret.
Avatar billede mrjowns Novice
04. september 2001 - 12:44 #4
OK, faktisk drejer det sig om en opgaveDB - jeg troede bare det var nemmere at forklare det som jeg gjorde.
I samme db har jeg to tabeller (HO og UO) med næsten de samme punkter i (ID, Navn, Type, Leder, Beskrivelse, Status).
Mine to kriterier skal så søge (på begge kriterier) i begge tabeller, så man kan vel egentlig godt sige at det er to uafhængige søgninger! Men den skal jo søge med begge kriterier i begge tabeller i hver søgning!

Skal der forklares mere? :-)

--jowns--
Avatar billede ldanielsen Nybegynder
04. september 2001 - 12:53 #5
Nej, det er fint

Du skal så have to søgninger. Jeg prøver lige at se på det ...
Avatar billede ldanielsen Nybegynder
04. september 2001 - 13:06 #6
En mulig løsning: Du kan kun vælge de kolonner der der ens fra de to tabeller. Du kan så evt gøre tabellerne ens ved at tilføje kolonner, selvom de ikke skal bruges.

Derefter kan du kombinere dem med:

SELECT ID, Navn, Type, Leder, Beskrivelse, Status FROM HO
WHERE Navn LIKE \"*søgeord*\" OR Leder LIKE \"*søgeord*\"
UNION
SELECT ID, Navn, Type, Leder, Beskrivelse, Status FROM UO
WHERE Navn LIKE \"*søgeord*\" OR Leder LIKE \"*søgeord*\"
ORDER BY Navn

Avatar billede mrjowns Novice
04. september 2001 - 13:10 #7
Vil du ikke være rar at give mig hele koden - jeg er næsten newb!! :-)

--jowns--
Avatar billede ldanielsen Nybegynder
04. september 2001 - 13:10 #8
Eller med flere søgeord:

SELECT ID, Navn, Type, Leder, Beskrivelse, Status
FROM HO
WHERE Navn LIKE \"*søgeord1*\"
OR Leder LIKE \"*søgeord1*\"
OR Navn LIKE \"*søgeord2*\"
OR Leder LIKE \"*søgeord2*\"

UNION

SELECT ID, Navn, Type, Leder, Beskrivelse, Status
FROM UO
WHERE Navn LIKE \"*søgeord1*\"
OR Leder LIKE \"*søgeord1*\"
OR Navn LIKE \"*søgeord2*\"
OR Leder LIKE \"*søgeord2*\"

ORDER BY Navn

Nu skal det så bygges ind i ASP\'en, ikke?

Jeg er nødt til at vende tilbage senere :o(
Avatar billede mrjowns Novice
04. september 2001 - 15:07 #9
Jeg søgte faktisk både sql og asp-kode. Kan du hjælpe med det? Hvordan laver jeg selve formen?

--jowns--
Avatar billede mrjowns Novice
10. september 2001 - 12:22 #10
What ever... :-/

--jowns--
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