webForumDet fria alternativet

Söker efter rätt sprit.

Databaser & SQLur Databashanterare & SQL

1 svar · 290 visningar · startad av Mr T

Medlem sedan maj 20071 061 inlägg
Frågan#1

Hur gör man en bra receptdatabas med välfungernade sökning ?
Letade efter en liknade sökfunktion som ICA har, där man skriver in ingredienser och får reda vad man kan göra av dom. Letade efter en liknade variant men då med drinkrecept. Fann inget och började klura hur man skulle bygga en sådan.

Databaser som behövs :

ingrediens (i mitt fall, mest prommillehaltiga sådanan)
id - ex. 23
namn - ex. "Vodka"
beskrivning - ex. "färglös, illasmakande, med stora changser till onykterhet och efterföljande vomering och skammsena minnesluckor"

recept
id - ex. 45
namn - ex. snowball
beskrivning - ex. "40 cl Voka som toppas av 5 droppar Tippex. Skakas väl innan intagande."

relationer - Talar om vilka ingredienser som finns i recpten
id - (oviktigt i detta samanhhang. Eller?)
recept_id - 45
ingrediens_id - 23

(för receptet ovan kommer också ingrediensen "Tippex" (ex, id=3) att behövas kopplas till receptet)

Frågan är nu om det går att göra en sökning så som jag vill med hjälp av dessa tabeller.

Sökning 1:
Jag vill söka på alla drinkar som har "Vodka" (id 45) OCH "Tippex" (id 3). Dom får gärna innehålla andra ingredienser också.

Sökning 2:
Jag vill söka på alla drinkar som ENBART innehåller dessa ingredienser, eller i alla fall någon av dom 2. (Dock ska man kanske som max kunna välja 5 ingredienser.)

Tipps om sida som redan innehåller drinkrecept med sådanhär sökfunktion tas emot tacksamt, men problemet ovan vore trevligast att få svar på då det nu gnager i skallen på mig.

Medlem sedan dec. 20025 483 inlägg
#2

1:

select <columns>
  from ingredienser i
inner
  join relationer r
    on r.ingrediens_id = i.id
inner
  join recept c
    on r.recept_id = c.id
 where ( c.namn like '%tippex%'
    or   c.beskrivning like '%tippex%' )
   and ( c.namn like '%vodka%'
    or   c.beskrivning like '%vodka%' )

2:

select <columns>
  from ingrediens i
inner
  join relationer r
    on r.ingrediens_id = i.id
inner
  join recept c
    on r.recept_id = c.id
 where i.namn like '%tippex%'
    or i.namn like '%vodka%'

Eventuellt kan de båda 'c.namn' utelämnas från den första select:en och, nej, du behöver inte ha med 'id' i tabellen relationer.

141 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)