Sub Query - Overzicht

Status
Niet open voor verdere reacties.

PatrickSt

Gebruiker
Lid geworden
1 okt 2010
Berichten
38
Hallo, mijn volgende post alweer, ik moet een sub query maken van de docenten die nog geen cursus hebben gegeven alleen ik kom er niet uit.

Ik dacht zelf aan zoiets;
Code:
SELECT DISTINCT doc_code
FROM cursus
WHERE doc_code <>
(SELECT doc_code FROM docent WHERE cursus.doc_code <> docent.doc_code)
Maar dat werkt dus niet

dan krijg ik de melding;

Deze subquery kan maximaal één record als resultaat hebben.

Hopenlijk kunnen jullie wat licht op de query (sub) laten schijnen.

Groeten,
Patrick
 
Je subquery zou er zo uit moeten zien:
Code:
<>(SELECT DOCENT.DOC_CODE FROM DOCENT LEFT JOIN CURSUS ON DOCENT.DOC_CODE=CURSUS.DOC_CODE WHERE (CURSUS.CURS_CODE Is Null))
 
Eigenlijk zit je op de verkeerde tabel te kijken: je wilt een selectie maken van docenten die geen cursussen hebben gegeven, dus de tabel Docenten is je hoofdtabel. De subquery draait dan op de tabel Cursussen. Dus zoiets:
Code:
SELECT DISTINCT DOC_CODE
FROM DOCENT
WHERE DOC_CODE Not In (SELECT DISTINCT DOCENT.DOC_CODE FROM DOCENT, CURSUS WHERE (CURSUS.DOC_CODE=[docent].[DOC_CODE]))
 
Oké nu doet hij het zoals hij het ook hoort te doen, maar zal je mischien ook kunnen uitleggen hoe je nou bij de query kwam? want ik snap dat je zegt van "SELECTEER ALLEEN doc_naam VAN docent WAAR doc_code IS NIET IN (SELECTEER ALLEEN docent.doc_code VAN docent, cursus WAAR cursus.doc_code = docent.doc_code)"

of lees ik dit nou weer verkeerd ofzo?

Ik wil er graag wat slimmer in worden, de niet zo moeilijke querys kan ik wel maar dit wil ik wel graag leren:rolleyes:
 
Zou je mij mischien ook willen helpen met een dubbele sub query?

Ik heb nu;
Code:
SELECT DISTINCT cursus.curs_code, cijfer
FROM cursus, c_regel1
WHERE cursus.curs_code IN (SELECT DISTINCT c_regel1.curs_code FROM c_regel1, cursus WHERE cursus.curs_code = c_regel1.curs_code)
AND cijfer IN ( SELECT MAX (c_regel1.cijfer) FROM c_regel1 WHERE cursus.curs_code = c_regel1.curs_code)
Dit werkt wel maar ik weet niet als het in goede volgorde enzo is zoals je net ook zij bij die vorige query, dat ik verkeerde tabel als eerste nam
 
Laatst bewerkt:
Een subquery is eigenlijk een query die je gebruikt om een aantal records 'voor te filteren'. In de tabel Docenten heb je alle docenten staan, degenen die een cursus geven, en degenen die geen cursus geven. De laatste groep wil je graag zien.
Met de subquery maak je een lijstje van alle docenten die een cursus geven. Dat doe je door alle Docentencodes op te halen uit de tabel Cursus. Overigens was mijn voorbeeld veel te ingewikkeld. Dit is een betere versie...

Code:
SELECT DISTINCT DOC_CODE FROM DOCENT
WHERE (DOC_CODE Not In (SELECT DISTINCT DOC_CODE FROM CURSUS ));

Je haalt dus alle docentcodes op uit Cursus (je wilt ze één keer hebben, vandaar DISTINCT) en zet die uitkomst als criterium op het veld Doc_Code. Logisch: je haalt met de subquery Doc_Codes op, dus dat is je filtering.
Ik zal zo even naar je tweede vraag kijken...
 
Ik zie eerlijk gezegd het nut niet van de dubbele subquery. Als je alleen het Max criterium laat staan, is de uitkomst hetzelfde. Logisch, omdat er maar één waarde per cursuscode uitkomt.
 
Ja oké, maar goed er stond dat ik een dubbele sub query moest maken dus tja dan moet dat maar he :o

En dan had ik nog een vraag;

Ik probeer een query te maken te maken die een overzicht weer geeft van de cursisten die nog niet betaald hebben maar elke keer als ik wat probeer dan laat hij alle betaalde zien of niks..

Code:
SELECT DISTINCT cursistnr, betaald FROM c_regel1 WHERE betaald IN (SELECT betaald FROM c_regel1 WHERE NULL betaald)

en als ik dan een simpele query doe zoals deze
Code:
SELECT DISTINCT cursistnr,curs_code, betaald FROM c_regel1 WHERE betaald IS NULL

werkt hij wel zoals die hoort
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan