Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: MySQL kysely kyselyssä?

creepy [09.02.2013 18:09:11]

#

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||

Metabolix [09.02.2013 18:22:22]

#

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

creepy [09.02.2013 18:59:07]

#

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

Metabolix [09.02.2013 19:03:36]

#

Vaihda jälkimmäiseen esimerkkiini LEFT JOIN, niin saat NULL-arvon riveille, joilla ei ole alue_id:tä.

Vastaus

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

Tietoa sivustosta