Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySql yhdistetty haku

DrDeath [19.12.2012 20:20:14]

#

Table A
A.id
A.data - Tyyppi mikä tahansa

Table B
B.id
A.id
B.data - Tyyppi mikä tahansa

Table C
C.id
A.id
C.data - Tyyppi mikä tahansa

Onko mitenkään mahdollista yhdellä kyselyllä hakea A.id:n perusteella B.data ja C.data (Huom! B.data ja C.data voivat olla eri tietotyyppiä [int, text, jne.])?

Myöhemmin, jos lisäisin B:n ja C:n kaltaisen tietueen, niin tämän saman haun pitäisi automaattisesti hakea myös siitä A.id:n perusteella.

Metabolix [19.12.2012 20:48:09]

#

Mielivaltaista tietoa ei voi hakea automaattisesti, vaan joka tapauksessa pitää kirjoittaa kyselyyn ainakin taulut ja yleensä myös liitosehdot. Käytännössä kyselystä voi tulla tällainen:

SELECT * FROM A
LEFT JOIN B on B.A_id = A.id
LEFT JOIN C on C.A_id = A.id

Kysymyksestä jäi epäselväksi, ovatko kaikki liitokset 1:1-liitoksia; jos ovat, olisi helpompi käyttää kaikissa tauluissa samaa id:tä, jolloin kyselyn voisi kirjoittaa myös näin:

SELECT * FROM A
LEFT JOIN B USING (id)
LEFT JOIN C USING (id)

1:1-tapauksessa on myös harkitsemisen arvoista, tarvitaanko useaa taulua ollenkaan.

Tietotyypit vaikuttavat MySQL:ssä kyselyihin varsin vähän.

Vastaus

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

Tietoa sivustosta