Verschachtelte Abfrage

Verschachtelte Abfrage

am 31.01.2007 19:18:06 von Stephan Dreisbach

Hallo,

in der Tabelle Aufgaben sind Mathematikaufgaben (Aufgabe)
festgehalten, in richtigeAufgaben die Aufgaben mit Datum, die richtig
gerechnet wurden.

Mit
select Nr, Aufgabe from Aufgaben where Nr in (select Aufgabennr from
richtigeAufgaben where Schuelernr='$SchNr' and
TO_DAYS(now())-TO_DAYS(Datum)<2)

frage ich ab, welche Aufgaben in den letzten 2 Tagen richtig gerechnet
wurden.

Wie bekomme ich das Ganze nach Datum sortiert, das nur in
richtigeAufgaben steht?

--
Stephan

Re: Verschachtelte Abfrage

am 31.01.2007 19:34:23 von Helmut Chang

Stephan Dreisbach schrieb:

> Mit
> select Nr, Aufgabe from Aufgaben where Nr in (select Aufgabennr from
> richtigeAufgaben where Schuelernr='$SchNr' and
> TO_DAYS(now())-TO_DAYS(Datum)<2)
>
> frage ich ab, welche Aufgaben in den letzten 2 Tagen richtig gerechnet
> wurden.
>
> Wie bekomme ich das Ganze nach Datum sortiert, das nur in
> richtigeAufgaben steht?

Indem du einen JOIN statt einem Subselect verwendest:

SELECT Nr,
Aufgabe
FROM Aufgaben a
JOIN richtigeAufgaben ra ON a.nr = ra.Aufgabennr
WHERE ra.Schuelernr = '$SchNr'
AND TO_DAYS(NOW()) - TO_DAYS(ra.Datum) < 2
ORDER BY ra.Datum

gruss, heli

Re: Verschachtelte Abfrage

am 31.01.2007 20:29:59 von Stephan Dreisbach

Helmut Chang schrieb:

>Stephan Dreisbach schrieb:
>
>> Mit
>> select Nr, Aufgabe from Aufgaben where Nr in (select Aufgabennr from
>> richtigeAufgaben where Schuelernr='$SchNr' and
>> TO_DAYS(now())-TO_DAYS(Datum)<2)
>>
>> frage ich ab, welche Aufgaben in den letzten 2 Tagen richtig gerechnet
>> wurden.
>>
>> Wie bekomme ich das Ganze nach Datum sortiert, das nur in
>> richtigeAufgaben steht?
>
>Indem du einen JOIN statt einem Subselect verwendest:
>
>SELECT Nr,
> Aufgabe
>FROM Aufgaben a
> JOIN richtigeAufgaben ra ON a.nr = ra.Aufgabennr
>WHERE ra.Schuelernr = '$SchNr'
> AND TO_DAYS(NOW()) - TO_DAYS(ra.Datum) < 2
>ORDER BY ra.Datum
>
>gruss, heli

Danke