29. juni 2006 - 15:42Der er
15 kommentarer og 1 løsning
Søgning i flere tabeller.
Hej.
Jeg er i gang med hjemmeside, der indeholder en større database, hvor flere tabeller hænger sammen - således at det hele kobles sammen af et id i en "hovedtabel", om man så må sige.
Jeg skal nu have lavet en søgefunktion - en der søger gennem alle felter i de sammenhængende tabeller (kaldet simpel søgning) og en der søger i en specifik række.
Er der en der kan hjælpe med sådan en søgefunktion? Jeg kan enten poste tabellerne her eller sende dem via mail.
[movie] id barcode title subtitle year company_id category_code barcode2 language web1 web1_text location_id
[headword] id word
[headword_movie] id headword_id movie_id
[category] id category_code category_name
[actor] id name
[actor_movie] id actor_id movie_id
[compagny] id name
[location] id location
Movie-tabellen er selvfølgelig den der "holder det hele sammen". Søge funktionen skal søge i alle tabellers rækker, men når resultatet vises, skal en film kun vises en gang.
Det skal måske lige siges, at både både mellem relationerne headword<->movie og actor<->move, jo kan forekomme flere - hvad kalder men det - relationer. Således kan der til hver film kobles både mere end 1 headword (stikord) og mere end 1 skuespiller.
- lige et side spørgsmål. Jeg bruger jer eksperter en del, og det er ultimativt! Er det smart at blive pro-medlem, hvis man ikke svarer på så mange spørgsmål, men stiller flere?
Hvad skal der være af søgemuligheder?? Her tænker jeg på om der kun er en tekstboks, hvor man kan skrive en tekst som så skal søge i headword/location/actor osv., eller er de opdelt i flere søgefelter så man specifikt har en boks til actor, en anden til location osv??
Der skal være to søgesider. En der er en simpel søgning, hvor brugeren søger via EN søgeboks i alle tabeller. Og en anden side, hvor brugeren kan søge via fem felter - ved siden af hvert felt, skal der så være en menu, hvor brugeren vælger det felt han vil søge i.
Se feks. www.kb.dk i deres REX-system. Hvis man vælger avanceret søgning, er der den funktion jeg ønsker på side nr. 2.
select distinct m.id, m.title from movie m inner join headword_movie hm on hm.movie_id=m.id inner join headword h on h.id=hm.headword_id where h.word='search' union select distinct m.id, m.title from movie m inner join actor_movie am on am.movie_id=m.id inner join actor a on a.id=hm.actor_id where a.name='search' union select distinct m.id, m.title from movie m inner join compagny c on c.id=m.company_id where c.name='search' union select distinct m.id, m.title from movie m inner join category c on c.category_code=m.category_code where c.category_name='search' union select distinct m.id, m.title from movie m inner join location l on l.id=m.location_id where l.location='search'
Du vil måske gerne udbytte alle "=" til en "like" syntax i stedet, så hvis man skriver "drew" finder den "drew barrymore". Det skal så se sådan ud i stedet:
Lige umiddelbart virker det ikke. Jeg har lavet en copy-paste. Jeg er ikke helt sikker på om jeg skal gøre noget ved din select, feks. sætte AS mellem movie og m eller???
Jeg har lige læst en artikel om Full-Text searching. Er det noget man ville kunne anvende her? Jeg kender ikke så meget til det.
Sure. Beklager det sene svar, men jeg har lagt syg :(
.o) <-- One Eyed Jack
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.