Anmelden

View Full Version : nur bestimmte Sätze zählen, die noch nicht gezäglt sind



Robi
06-05-08, 11:37
Hallo
für folgendes SQL bekomme ich einen Fehler, das 2. max(rrn( wird bemängelt.

SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
feld LIKE 'EV%' AND max(RRN(datei)) NOT IN (SELECT
satznrfeld FROM datei2 WHERE ...)


lasse ich dort das max weg, (was für mich sogar richtiger ist)
SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
feld LIKE 'EV%' AND RRN(datei) NOT IN (SELECT
satznrfeld FROM datei2 WHERE ...)

so ist das Ergebniss des 1. max(rrn(
immer 1 (es gibt keinen Satz mit RRN(1) in der datei.

lasse ich das in ganz weg
SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
feld LIKE 'EV%'

ist das erg. richtig

Wie kann ich nur die Sätze zählen,
(und die max(rrn)) bekommen) die noch nicht in der 'schon-gezählt-datei' = datei2 stehen ?

Danke Robi

Pikachu
06-05-08, 12:00
Angaben unter WHERE beeinflussen die Ergebnismenge. Versuche einmal, das MAX(...) NOT IN ... mittels HAVING anzubinden.

Fuerchau
06-05-08, 12:16
Da mußt du ein CTE verwenden:

with
MyErg as (
SELECT COUNT(*) as mycount, max(RRN(datei)) as myrrn FROM datei
where feld LIKE 'EV%'
)
select * from MyErg
WHERE myrrn NOT IN (SELECT
satznrfeld FROM datei2 WHERE ...)

BenderD
06-05-08, 13:11
ruft nach Exception join
select count(*), max(rrn(datei))
from datei d1 left exception join datei2 d2
on d1.rrn(datei) = d2.satznrfeld
where d1.feld like 'EV%'

D*B
der sich fragt, warum diese Kiste eine Datenbank hat (F*Z hätte wohl gesagt: konnte man das nicht anders machen???)


Hallo
für folgendes SQL bekomme ich einen Fehler, das 2. max(rrn( wird bemängelt.

SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
feld LIKE 'EV%' AND max(RRN(datei)) NOT IN (SELECT
satznrfeld FROM datei2 WHERE ...)


lasse ich dort das max weg, (was für mich sogar richtiger ist)
SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
feld LIKE 'EV%' AND RRN(datei) NOT IN (SELECT
satznrfeld FROM datei2 WHERE ...)

so ist das Ergebniss des 1. max(rrn(
immer 1 (es gibt keinen Satz mit RRN(1) in der datei.

lasse ich das in ganz weg
SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
feld LIKE 'EV%'

ist das erg. richtig

Wie kann ich nur die Sätze zählen,
(und die max(rrn)) bekommen) die noch nicht in der 'schon-gezählt-datei' = datei2 stehen ?

Danke Robi

Robi
06-05-08, 13:17
@Pikachu
Danke, das hat so funktioniert !

@Fuerchau
so haben wir es zwischenzeitlich versucht, aber die having variante ist kürzer und lesbarer

@BenderD
vielen Dank aber wie gesagt: das andere ist kürzer und lesbarer.

@Konrad Zuse
doch, wenn die Anwendung in der Neuzeit entstanden wäre



Danke an alle !
Robi

Pikachu
06-05-08, 13:29
Es stellt sich trotzdem noch die Frage, was denn so alles in der Datei2 drinsteht. Und welche Sätze alles durch den COUNT(*) gezählt werden sollen. Vielleicht kannst du ein Beispiel machen?

Wie steht denn der Parameter REUSEDLT bei der ersten Datei?

Robi
06-05-08, 14:32
Es geht um völlig wahlfreie Datenbankereignisse die gemeldet werden sollen. Aber eben nur ein mal (einstellbar)
Man erfasst n Bedingungen zu einer oder mehreren Dateien und sagt : Bitte email an ... wenn Bedingung eintritt. I.d.R. will man diese Info aber nicht jede halbe Stunde.
Robi

Pikachu
06-05-08, 15:37
Dann darf aber der Parameter REUSEDLT der ersten Datei nicht auf *YES stehen, wenn auch Datensätze daraus gelöscht werden können. Und ihr dürft diese Datei auch nicht reorganisieren und neu anordnen (RGZPFM), da ansonsten der Inhalt der Datei 2 nicht mehr stimmt.