Avatar billede morten-1981 Nybegynder
16. september 2008 - 14:32 Der er 3 kommentarer

Avanceret søgning i database fordelt på 3 tabeller

Jeg har to tabeller:

tblOpskrift
- id
- text

tblIngrediens
- id
- navn

tblIngrediensOpskrift
- id
- tilbehoerID
- indholdID

De to første er altså koblet sammen gennem den tredje tabel, der bruges som en mange-til-mange relation.

Jeg vil gerne have mulighed for at søge på 1-20 ingredienser, med det formål at opstille de opskrifter der kan laves udfra dem.

Men hvordan går jeg til den? Forestiller mig at ende ud med et multidimensionelt array, men har for lidt erfaring på området så håber på et fingerpeg fra nogle af jer erfarne folk (forventer ikke en køreklar løsning).
Avatar billede jakobdo Ekspert
16. september 2008 - 15:41 #1
Du burde kunne bruge:

SELECT o.text FROM tblOpskrift o INNER JOIN tblIngrediensOpskrift io ON o.id = io.indholdID INNER JOIN i.id = io.tilbehoerID WHERE i.navn LIKE '%".$seog."%'
Avatar billede morten-1981 Nybegynder
16. september 2008 - 17:19 #2
Hej Jakobdo,

Mange tak for dit svar. Hvis det kan løses med én sql-sætning ville det da være helt fantastisk.

To ting jeg studser over ved dit forslag er dog:
1) Man skulle jo gerne kunne vælge flere ingredienser - hvor det er id'et vi har at søge på. Du søger umiddelbart på navnet?
2) tblIngrediens er ikke defineret som "i" på noget tidspunkt

Mange tak for dit bud :)
Avatar billede jakobdo Ekspert
16. september 2008 - 20:48 #3
Så skal det nok være noget i stil med:

SELECT o.text FROM tblOpskrift o INNER JOIN tblIngrediensOpskrift io ON o.id = io.indholdID WHERE io.tilbehoerID IN '%".$ID_er_fra_formen."%'
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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