Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySql, hakeminen useammasta taulusta

lp [07.05.2014 16:19:29]

#

Minulla on taulut

työntekijä
-id
-nimi
-osoite
-paikkakunta

työhuone
-id
-osoite
-paikkakunta

työntekijän_työhuone
-työntekija_id
-työhuone_id

Työntekijä voi liittyä siis useampaan työhuoneeseen.

Nyt pitäisi tehdä kysely, jossa verrattaisiin hakusanaa työntekijän ja työhuoneen tietoihin. Kyselyn pitäisi palauttaa kaikki työntekijät, jonka omista tiedoista, tai jonkun häneen liitetyn työhuoneen tiedoista löytyy tuo hakusana.

Onnistuuko yhdellä kyselyllä? :)

Hengilö [07.05.2014 17:16:58]

#

Eikös olisi helpompaa, jos olisi vain kaksi taulua:

Työntekijä
- id
- nimi
- osoite
- paikkakunta
- työhuoneet (vaikka serialisoitu array tai id:t eroteluna esim. pilkulla)

Työhuone
- id
- osoite
- paikkakunta
- työntekijät (ks. Työnetkijä.työhuoneet)

Silloin haku onnistuu paljon yksinkertaisemmin.

lp [07.05.2014 17:52:10]

#

SELECT * FROM työntekijä
LEFT JOIN työntekijän_työhuone ON työntekijä.id=työntekijän_työhuone.työntekijä_id
LEFT JOIN työhuone ON työntekijän_työhuone.työhuone_id=työhuone.id
WHERE MATCH (työntekijä.nimi,
             työntekijä.osoite,
             työntekijä.paikkakunta,
             työhuone.osoite,
             työhuone.paikkakunta,
             ) AGAINST ('hakusana' IN BOOLEAN MODE)

sain sen itseasiassa (ehkä) toimiaan tähän tyyliin.

Täytyy vielä testailla.

Työhuoneen työntekijäitä voi olla useampia tai yksi tai ei yhtään ja kaikki työntekijät voivat muokata työhuoneen jäseniä, joten tuntui helpommalta tuon "ylimääräisen" taulun käyttö :)

Grez [07.05.2014 18:33:09]

#

Hengilö kirjoitti:

Eikös olisi helpompaa, jos olisi vain kaksi taulua:

Silloin haku onnistuu paljon yksinkertaisemmin.

Ei kun se menee silloin just vaikeammaksi.

Monta-moneen yhteyksissä "aputaulu" on relaatiotietokannoissa normaali ja toimivin käytäntö.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta