Code: Alles auswählen.
select dd02l~tabname from dd02l
into table t_itab
where ( dd02l~contflag = 'C' or
dd02l~contflag = 'G' ) and
dd02l~tabclass = 'TRANSP' and
EXISTS ( select *
FROM (dd02l~tabname)
).
Dient zur Vereinfachung meines Debuggings und ich wollte mal Subqueries ausprobieren.Öhm - warum willst du das prüfen?
Ok, hier liegt dann wohl mein Denkfehler: Ich will schon auf den jeweiligen Wert des Feldes dd02l~tabname das Query anwenden.ralf.wenzel hat geschrieben:Moin,
mach mal das "dd02l~" überall weg und im Subquery das "~tabname". Dann stimmt das Ding wenigstens syntaktisch und lesbar isses auch noch.
Code: Alles auswählen.
SELECT tabname FROM dd02l
INTO TABLE t_itab
WHERE contflag IN ('C','G') OR
AND tabclass = 'TRANSP'.
Code: Alles auswählen.
data: gt_tabname type standard table of tabname.
field-symbols: <tabname> type tabname.
select tabname from dd02l into table gt_tabname
where contflag in ('C','G')
and tabclass = 'TRANSP'.
loop at gt_tabname assigning <tabname>.
select count(*) from (<tabname>).
check sy-subrc eq 0.
clear <tabname>.
endloop.
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
Spookykid
Ne, das geht leider allgemein nicht in SQL-Syntax. In einer Query kann nicht ein Wert ermittelt werden um dann als Tabellenname für eine weitere Abfrage zu dienen. Vereinfacht gesagt: In SQL wird zwischen NAME und WERT unterschieden.Spookykid hat geschrieben:Ich dachte, man könnte das eventuell in eine eine "eine" Abfrage packen. In 2 Schritten ist es natürlich auch ok.
Ich würd eher auf den SELECT SINGLE tippen, da dann wirklich nur ein Datensatz selektiert wird und die Datenbank nicht "mühselig" (je nach größe und DB-Optimizer) alle einträge zählen muss. Irgendwo hab ich mal gehört, dass es mit UP TO x ROWS sogar noch schneller geht als mit SELECT SINGLE.ralf.wenzel hat geschrieben:Man mag sich drüber streiten, ob ein select single statt eines select count(*) schneller ist.