Abfrage mit und ohne Bedingung

Fragen und Probleme rund um die Abfragespache SQL.
simar
Benutzer
Beiträge: 82
Registriert: Di 9. Okt 2018, 17:40

Abfrage mit und ohne Bedingung

Beitrag von simar »

Guten Abend , ich hab mal wieder eine Frage
ich habe ein SQL Script mit der ich Daten aus mehreren Tabellen zusammenführe die eine bestimmte Bedingung erfüllen, soweit ok.
jetzt möchte ich dieses Script erweitern dass es mir zusätzlich die Daten anzeigt bei denen diese Bedingung 'NULL' ist.

Möchte die Daten anschließend über odbc und mysql in Excel weiter bearbeiten muß also mit Aliasen vorsichtig sein

gibt es da eine einfache Lösung?

frastr
Benutzer
Beiträge: 46
Registriert: Di 9. Sep 2014, 12:20
Wohnort: Hoyerswerda, Sachsen

Re: Abfrage mit und ohne Bedingung

Beitrag von frastr »

Code: Alles auswählen

select ... from {table} t where t.{column_name} is null
Gruß frastr

akretschmer
Erfahrener Benutzer
Beiträge: 7715
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Abfrage mit und ohne Bedingung

Beitrag von akretschmer »

der spannende Teil für mich ist ja, was Du mit Excel und MySQL dann machen willst, was in PostgreSQL nicht geht ...
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

simar
Benutzer
Beiträge: 82
Registriert: Di 9. Okt 2018, 17:40

Re: Abfrage mit und ohne Bedingung

Beitrag von simar »

ich möchte niemanden zu den Orginaldaten Zugriff gewähren und so kann jeder in der Exceldatei seine gewünschten Infos einsehen.

simar
Benutzer
Beiträge: 82
Registriert: Di 9. Okt 2018, 17:40

Re: Abfrage mit und ohne Bedingung

Beitrag von simar »

@ frastr, mein Abfrage kommt mit der geschweiften Klammer nicht klar, ERROR: FEHLER: Syntaxfehler bei »{«
LINE 16: from {table,
^
SQL-Status: 42601
Zeichen: 698

wenn ich die normale Klammer verwende stört es sich am Komma nach table

akretschmer
Erfahrener Benutzer
Beiträge: 7715
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Abfrage mit und ohne Bedingung

Beitrag von akretschmer »

diesen Teil sollst Du mit Deinem ganz realen SQL - Details, also Tabellenname, Spaltenname etc. ersetzen ...
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

simar
Benutzer
Beiträge: 82
Registriert: Di 9. Okt 2018, 17:40

Re: Abfrage mit und ohne Bedingung

Beitrag von simar »

select ... from tabellen (select.komplett) as t where Bedingungen
so hab ich es gemacht, eigentlich sind es doch nur 2 funktionierende Abfragen ich hab mehrere ähnliche am laufen aber bei diesem meckert das system am Beginn des inneren selects ERROR: FEHLER: Syntaxfehler bei »select«
LINE 21: select
^
SQL-Status: 42601
Zeichen: 430mit

akretschmer
Erfahrener Benutzer
Beiträge: 7715
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Abfrage mit und ohne Bedingung

Beitrag von akretschmer »

*seufz*

was geht bisher, und was willst Du erreichen? Die Syntax von SELECT ist simpel:

Code: Alles auswählen

test=*# \h select
Command:     SELECT
Description: retrieve rows from a table or view
Syntax:
[ WITH [ RECURSIVE ] with_query [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
    [ * | expression [ [ AS ] output_name ] [, ...] ]
    [ FROM from_item [, ...] ]
    [ WHERE condition ]
    [ GROUP BY grouping_element [, ...] ]
    [ HAVING condition [, ...] ]
    [ WINDOW window_name AS ( window_definition ) [, ...] ]
    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
    [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
    [ LIMIT { count | ALL } ]
    [ OFFSET start [ ROW | ROWS ] ]
    [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
    [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]

where from_item can be one of:

    [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
                [ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ]
    [ LATERAL ] ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
    with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
    [ LATERAL ] function_name ( [ argument [, ...] ] )
                [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
    [ LATERAL ] function_name ( [ argument [, ...] ] ) [ AS ] alias ( column_definition [, ...] )
    [ LATERAL ] function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
    [ LATERAL ] ROWS FROM( function_name ( [ argument [, ...] ] ) [ AS ( column_definition [, ...] ) ] [, ...] )
                [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
    from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]

and grouping_element can be one of:

    ( )
    expression
    ( expression [, ...] )
    ROLLUP ( { expression | ( expression [, ...] ) } [, ...] )
    CUBE ( { expression | ( expression [, ...] ) } [, ...] )
    GROUPING SETS ( grouping_element [, ...] )

and with_query is:

    with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( select | values | insert | update | delete )

TABLE [ ONLY ] table_name [ * ]

URL: https://www.postgresql.org/docs/12/sql-select.html
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

simar
Benutzer
Beiträge: 82
Registriert: Di 9. Okt 2018, 17:40

Re: Abfrage mit und ohne Bedingung

Beitrag von simar »

mit dem ersten select bekomme ich meine Daten mit Bedingung aus 2 anderen Tabellen, funktioniert
mit den anderen select bekomme ich alle Daten ohne die Daten aus dem Ersten aber mit dem Nullwert in einer Spalte
und die Zeilen mit dem Nullwert möchte ich auch in der Ersten Abfrage haben
die kann ich aber inder ersten Abfrage nicht direkt bekommen weil das Feld mit dem Nullwert dort nicht Null ist sondern auf die anderen beiden Tabellen verweist.

laut Syntax müßte meine Abfrage "select ... from tabellen (1.select.komplett) as t where Bedingungen" stimmen aber igendwie muß sich doch ein Fehler plaziert haben

akretschmer
Erfahrener Benutzer
Beiträge: 7715
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Abfrage mit und ohne Bedingung

Beitrag von akretschmer »

meine Glaskugel meint:

Code: Alles auswählen

test=*# select val from foo;
 val 
-----
   1
   2
(2 rows)

test=*# select val from (select * from foo) as f where val = 1;
 val 
-----
   1
(1 row)

test=*# select val from tabellen (select * from foo) as f where val = 1;
ERROR:  syntax error at or near "select"
LINE 1: select val from tabellen (select * from foo) as f where val ...
                                  ^
test=*# 
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten