SQL count inner join

nikita731

Newbie
Registriert
Mai 2014
Beiträge
3
Hallo,

ich hänge mal wieder :(

ich muss Anzahl alle Datensätze aus einer Tabelle angegeben bekommen, von Personen die über ein Kombifeld ausgewählt wurde.

Hierzu mein Code der nur Null anzeigt:

SELECT COUNT((T_ZSDR0100.[VBAK-FAKSK]) Or (T_ZSDR0100.[VBAK-LIFSK])<>" ")
FROM T_ZSDR0100 INNER JOIN T_PERNR ON T_ZSDR0100.[VBPA-PERNR_ZM] = T_PERNR.PERNR
WHERE ((T_ZSDR0100.[VBPA-PERNR_ZM]) Like [Formulare]![frm_Menu_client]![grouping]);

Kann mir jemand weiter helfen?
 
Ein paar mehr Info's wären natürlich nicht schlecht:
- Welches DBMS?
- Wie sehen die Datenstrukturen aus (In welcher Tabelle stehen welche Informationen in welcher Form)?

Aus meiner Sicht sieht das ganze syntaktisch schon recht seltsam aus (Count mit OR-Expression, Ausdruck hinter LIKE ohne Hochkomma).

Ansonsten lass die Abfrage doch mal ohne den count() laufen und schau dir die Ergebnismenge an.
Danach gruppierst du entsprechend und trägst den count() wieder ein.
 
Es ist eine Access DB 2010
in der Tabelle T_ZSDR0100 steht die Anzahl der Datensätze und die Personal-Nr.
und in der T_PERNR stehen die Personal-Nr. und die Personalnamen.
Über ein Kombinationsfeld werden dann die Namen, ausgewählt und ausgegeben werden soll dann,
wie viele Datensätze für die ausgewählten Person in der T_ZSDR0100 vorhanden sind.

Wenn ich mir nur die Datensätze der T_ZSDR0100 berechnen will funktioniert es, also:

SELECT COUNT((T_ZSDR0100.[VBAK-FAKSK]) Or (T_ZSDR0100.[VBAK-LIFSK])<>" ")
FROM T_ZSDR0100
Ergänzung ()

mit meinem Code bekomme ich zumindest eine Null angezeigt, wenn ich Count weg lasse, bleibt die Ausgabe leer. :mad:
 
Na dann klappt entweder der join oder deine Filterung nicht.

Baue dir das SQL doch mal Schritt für Schritt zusammen:
Zuerst der SELECT ... FROM ... JOIN ..., dann die WHERE-Klausel dazu und schließlich die Gruppierung samt Aggregatfunktionen, und lasse dir für jeden Schritt die Ergebnismenge anzeigen. Dann siehst du ja an welchem Schritt es hapert.
 
Zuletzt bearbeitet:
Hallo Daniel,

es liegt an der WHERE- Funktion.

'SELECT count((T_ZSDR0100.[VBAK-FAKSK]) Or (T_ZSDR0100.[VBAK-LIFSK])<>" ")
FROM T_ZSDR0100 INNER JOIN T_PERNR ON T_ZSDR0100.[VBPA-PERNR_ZM] = T_PERNR.PERNR '

bis hier funktioniert es, d.h. er gibt mir an, wie viele Datensätze es gibt, in den im Feld VBAK-FAKSK und VBAK-LIFSK ein Eintrag ist.

Wenn ich dann über das Kombinationsfeld filtern will

'WHERE ((T_PERNR.PERNR) Like [Forms]![frm_Menu_client]![grouping])'

gibt er noch 0 aus und wenn ich dann noch 'GROUP BY anfüge bekomm ich gar keinen Wert mehr....
 
Zurück
Oben