Tietokonemaailman tyhmien kysymysten kerho

  • Keskustelun aloittaja Keskustelun aloittaja Timba79
  • Aloitettu Aloitettu

Liitteet

  • what.webp
    what.webp
    53,8 KB · Katsottu: 111
osaisikohan joku viisas auttaa sql alikyselyiden kanssa.
Ongelman on siis tämä:
Kyselyssä haetaan tietoja 4 eri taulusta. Oon koittanut kaikkee kikkailla mutta ei noi inner joinit ole oikein auenneet. Sitten ku pitäis vielä säätää näillä ON- määreillä niin ei tosta kyllä mitään tule.
edit. elikkä miten noita sais yhdistettyä jotta kaikista sais kyselyyn mukaan tietoja?
 
Annas esimerkkilause, ni väännään sen kondikseen.
 
ok...otetaan vaikka tällainen esimerkki

SELECT oppilasnro, oppilas.etunimi, oppilas.sukunimi, suoritus.ainenro, kurssikerta, pvm, arvosana, myontaja, opettaja.etunimi, opettaja.sukunimi
FROM aine inner join(oppilas inner join suoritus on oppilas.oppilasnro=suoritus.oppilasnro) on
aine.ainenro=suoritus.ainenro
on (suoritus.myontaja=aine.vastuuopettaja)
Where myontaja not in
(select vastuuopettaja from aine);

mä oon kyllä pihalla ku lumiukko. Tökkii aika pahasti noi yhdistämiset.
mutta ideana on hakea sellaiset suoritukset (oppilaiden) jonka myöntäjä on joku muu kuin kurssin opettaja.

edit. elikkö taulut mitkä pitäis saada mukaan: opettaja, suoritus, oppilas, aine (siis 4) mikäli oon yhtään perillä nii pitäis vissiin toi opettaja taulukin tuoda inner joinilla mukaan että sais sen nimen (suoritus taulussa on vain myontaja (eli opettajanro)
 
opettaja taulusta löytyy luonnollisesti open tiedot (opettjanro, nimi)
oppilastaulusta oppilaan nimi, oppilasnro jne
suoritustaulussa oppilasnro, myontaja ja ainenro
ainetaulusta ainenro ja vastuuopettaja (eli myontaja eli opettajanro)
 
Täysin tarpeetonta monimutkastamista, kokeillaas näi:


SELECT op.oppilasnro, op.etunimi, op.sukunimi, ai.ainenro, su.kurssikerta, su.pvm, su.arvosana, su.myontaja, opet.etunimi, opet.sukunimi
FROM opettaja opet, suoritus su, oppilas op, aine ai
where op.oppilasnro = su.oppilasnro and ai.ainenro = su.ainenro and su.myontaja = ai.vastuuopettaja and su.myontaja != ai.vastuuopettaja

En nyt ollut varma mikä tulee mistäkin taulusta, mutta eiköhän idea selviä
 
kiitos paljon, toi erisuuri merkki (!=) ei nähtävästi kelpaa Accessissa, kai se sama on ku korvasin <> tällä.

Eli jos mitää tajusin nii noi inner join ja liitokset voi korvata näin
where op.oppilasnro = su.oppilasnro and ai.ainenro = su.ainenro and su.myontaja = ai.vastuuopettaja and su.myontaja != ai.vastuuopettaja

* vaikuttaa aika paljon selkeämmältä jos ei muuta :)

edit. tajusit muuten juuri sen mitä hainkin mun enemmän ku hapuilevalla selityksellä, oot ilmeisesti aika guru näissä
 
Juuri näin, mutta sitten on eri tyyppisiä joineja kuten outer joinit, jotka palauttavat riviltä vain null arvon jos tietoa kyseisestä taulusta ei löydy. Googlella löytyy esimerkkejä.
 

3 kpl M-Nutrition Anabolic Overdrive 6 kg

Orange - Sweet berry - Rasberry kiwi

-25%
mistähän se muuten johtuu ettei tuo löydä yhtäkään suoritusta, muutin alkuperäistä siten että suorituksen myöntäjä ei ole sama kuin kurssin opettaja.
kysely siis menee läpi mutta yhtään tällaisia kriteerejä täyttävää suoritusta ei löydy.
Huomasin että tuolla taulussa on yhden suorituksen kohdalla tyhjä kenttä ja luulen että tässä on vika (ei myöntäjää merkitty, miten siis pystyn lukemaan tuon kyseisen suorituksen?) :david:
 
Voit selvittää ongelmaa poistamalla aina yhden ehdon kerrallaan ja tutkia tuleeko tuloksia, tällöin saat selville mikä relaatio mättää ja voit etsiä syytä siitä...
 
okei, kysyisin muuten vielä tällaisestä kyselystä...
eli näyttääkö yhtää oikeelta, kun ehdot ovat: haetaan opettajien nimet jotka toimii jonku kurssin vastuuopeina ja saman aineen jonkin kurssin opettajina.

SELECT opet.etunimi, opet.sukunimi, ai.ainenro
from opettaja opet, kurssi ku, aine ai
where opet.opettajanro=ku.opettajanro and ku.opettajanro=ai.vastuuopettaja
 
Hyvältä näyttäisi, eli nyt hakee opettajat jokaiselle kurssille, jotka ovat jonkun aineen vastuuopettajia.
 
update komennosta:
olen tehnyt eka insertillä uuden kurssin ja pitäisi päivittää kurssille osallistujiksi oppilaat joiden asuinpaikkana on Helsinki.
UPDATE Kurssi
set osallistujalkm = (select count(*) oppilas.oppilasnro FROM Oppilas
where oppilas.postitmp='Helsinki')
ei pelitä, taitaa olla tuosta set komennosta lähtien aika mettässä.

edit. johonkin kohtaan pitäis varmaan merkitä sekin mihin kurssiin tuo päivitys tehdään.
 
eli kurssilla on kenttä osallistujamäärä, johon pitäisi tulla henkilöiden lukumäärä, jotka asuvat helsinkissä:

UPDATE KURSSI SET OSALLISTUJALKM = (SELECT COUNT(*) FROM oppilas where postitmp = 'Helsinki') where kurssinumero = 3
 
En kyllä tiedä mistä on kyse, mutta oman uppimani videon "thumbnail" youtubessa on jotain ihan muuta kuin shotti keskeltä videota :D Kukahan lie hakkeroinut youtubea, mutta tällainen kuva on Marko Savolaisen videossa, hiukan repeilein, mutta samalla kyllä kiinnostais tietää mikä toi juttu on:

http://www.youtube.com/results?search_query=+A+Tribute+to+Marko+Savolainen&search_type=&aq=f
Minä luulisin, että selaimesi vetää välimuistista jonkin väärän kuvan tuohon tilalle, koska itselläni ko. videon thumbnail näkyy ihan oikein, eli vika tuskin on youtuben päässä. Kokeilepa ctrl+f5 , jos sillä ratkeaisi. Itselläni on välillä ollut esimerkiksi jonkin pakkiksen napin tai muun pikkukuvan tilalla jotain ihan muuta, joka on ollut selaimen välimuistissa ja ilmeisesti jotenkin mennyt sekaisin sen oikean kuvan kanssa, mutta kun olen ladannut sivun kokonaisuudessaan uudelleen(välimuistin samalla tyhjentäen), niin homma on ratkennut ihan sillä.

Voit tietysti varmistua myös toisella selaimella, että onko sinäkin sama ongelma ja rajata ainakin ongelman syytä.
 
kiitti taas, koitin muuten tuotaki versioo mutta ei toiminu ku en tienny mihin tuo kurssinumero (ainenumero) pitäis sijoittaa.
Mutta selvispähän seki taas =)
 
kiitti taas, koitin muuten tuotaki versioo mutta ei toiminu ku en tienny mihin tuo kurssinumero (ainenumero) pitäis sijoittaa.
Mutta selvispähän seki taas =)
Jos ei sinulla olisi tuota viimeistä where kurssinumero = 3 tuossa updatessa, niin se päivittäisi ko. taulun kaikkien kurssien osallistujamääräksi tuon alikyselyssä saadun lukumäärän. Nyt tuo rajaa päivityksen vain niihin riveihin, joihin tuo where-ehto täsmää. Sama homma sitten esimerkiksi delete:jen kanssa, eli kannattaa olla tarkkana riittävän rajauksen kanssa, ettei lähde koko taulu tyhjäksi ;).
 
hyvä huomio :)
onko tässä joku vika kun access ei suostu lisäämään näitä ko. tauluun?

INSERT INTO Kurssi(opettajanro, alkupvm, loppupvm,ainenro)
select opettajanro, '2010-03-03', '2010-04-18', 'a481' FROM Opettaja
WHERE sukunimi='Testaaja' and etunimi='testi';

edit. siis läpi kyllä menee muttei muutoksia näy
 

Latest posts

Suositut

Back
Ylös Bottom