Tere,
Tässähän ei ole mitään järkeä mutta ei puututa nyt siihen
Onko tosi ettei samasta taulusta voi hakea kyselyn sisällä
eli
SELECT nimi, (select alue from Ataulu where id=alue_id) as alue from Ataulu
ei toimi
mutta jos kyselyn sisällä haetaan eri taulusta niin toimii esim.
SELECT nimi, (select alue from Btaulu where id=alue_id) as alue from Ataulu
Tässä on kyseessä vanha huonosti suunniteltu kanta jossa alue nimeä ei ole kuin en simmäisessä ko. alueelle lisätyllä rivillä
haluaisin tulosta alue tiedon kaikille riveille..
taulun sisältö esimerkki
|id|nimi|alue|alue_id| |1|v|pohj|| |2|m|null|1| |3|n||etel||
Kyllä voi hakea. Luultavasti ongelmasi on nyt siinä, että käytät kyselyssä vääriä tietoja: alikyselysi hakee vain sellaiset rivit, joilla id ja alue_id ovat samat, ja millään esimerkkirivilläsi näin ei ole.
Jos haluat, että alikyselyssä haettavan rivin id on sama kuin varsinaisen kyselyn alue_id, sinun pitää nimetä taulut ja viitata sarakkeisiin selvästi:
SELECT nimi, (SELECT alue FROM Ataulu AS t2 WHERE t2.id = t1.alue_id) AS alue FROM Ataulu AS t1
Yleensä on selvempää ja nopeampaa käyttää liitoksia:
SELECT t1.nimi, t2.alue FROM Ataulu AS t1 JOIN Ataulu AS t2 ON t2.id = t1.alue_id
Jes, kiitos, eipä taas osannu ajatella loppuun asti.
tämä toimii hyvin muuten mutta nyt on ongelmana nuo rivit missä ei ole alue_id_tä.. eli ne ensimmäiset alueen rivit
on se vaikeaa..
jos nuo kentät jotenkin yhdistäis
Vaihda jälkimmäiseen esimerkkiini LEFT JOIN, niin saat NULL-arvon riveille, joilla ei ole alue_id:tä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.