Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: dynamisch Schema auswählen

  1. #11
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von derLars Beitrag anzeigen
    Hallo Andreas,
    hallo ads,

    ich verstehe nicht ganz, wie die VIEW mein Problem lösen würde. Ich benötige als Rückgabe aus der Abfrage eine Spalte mit dem namen "startdate" und eine mit "enddate", und zwar je nach flagfeld entweder aus Schema1 oder aus Schema2. Sowas hier würde mich ja erstmal nicht weiter bringen:

    Code:
    CREATE DATABASE mytest;
    
    CREATE TABLE groups (
        groups_pk     INT PRIMARY KEY,
        schemeflag     SMALLINT NOT NULL,
        dates_fk     INT NOT NULL
        );
    
    CREATE SCHEMA schema1
        CREATE TABLE schema1.dates (
            dates_pk     INT PRIMARY KEY,
            startdate     DATE NOT NULL,
            enddate     DATE NOT NULL
            );
    
    CREATE SCHEMA schema2
        CREATE TABLE dates (
            dates_pk     INT PRIMARY KEY,
            startdate      DATE NOT NULL,
            enddate     DATE NOT NULL
            );
    
    INSERT INTO schema1.dates VALUES
        (1, '2009-01-01', '2009-05-31'),
        (2, '2009-06-01', '2009-12-31');
    
    INSERT INTO schema2.dates VALUES
        (1, '2009-01-01', '2009-03-31'),
        (2, '2009-04-01', '2009-07-30'),
        (3, '2009-08-01', '2009-12-31');
    
    INSERT INTO groups VALUES
        (1111, 1, 2),    -- linked to scheme1
        (2222, 2, 2);    -- linked to scheme2
    
    SELECT
        groups.*,
        schema1.dates.startdate AS s1start,
        schema1.dates.enddate AS s1end,
        schema2.dates.startdate AS s2start,
        schema2.dates.enddate AS s2end
    FROM
        groups,
        schema1.dates,
        schema2.dates
    WHERE
        groups.dates_fk = schema1.dates.dates_pk AND
        groups.dates_fk = schema2.dates.dates_pk
        ;
    Die View würde mir ja auch nicht mehr zurückgeben, nur auf Zeilen aufgeteilt - oder versteh ich das falsch?

    Ich weiß nicht genau, ob ich Dich richtig verstehe. Möglicherweise nicht. Was für ein Resultat erwartest Du denn aus Deinen Daten?

    Code:
    test=*# select * from schema1.dates ;
     dates_pk | startdate  |  enddate    
    ----------+------------+------------ 
            1 | 2009-01-01 | 2009-05-31  
            2 | 2009-06-01 | 2009-12-31  
    (2 rows)
    
    test=*# select * from schema2.dates ;
     dates_pk | startdate  |  enddate
    ----------+------------+------------
            1 | 2009-01-01 | 2009-03-31
            2 | 2009-04-01 | 2009-07-30
            3 | 2009-08-01 | 2009-12-31
    (3 rows)
    
    test=*# select * from groups ;
     groups_pk | schemeflag | dates_fk
    -----------+------------+----------
          1111 |          1 |        2
          2222 |          2 |        2
    (2 rows)
    
    test=*# select g.*, v.startdate, v.enddate from groups g left join view_dates v on g.schemeflag=v.schema_flag;
     groups_pk | schemeflag | dates_fk | startdate  |  enddate
    -----------+------------+----------+------------+------------
          1111 |          1 |        2 | 2009-01-01 | 2009-05-31
          1111 |          1 |        2 | 2009-06-01 | 2009-12-31
          2222 |          2 |        2 | 2009-01-01 | 2009-03-31
          2222 |          2 |        2 | 2009-04-01 | 2009-07-30
          2222 |          2 |        2 | 2009-08-01 | 2009-12-31
    (5 rows)
    
    test=*# \d view_dates
         View "public.view_dates"
       Column    |  Type   | Modifiers
    -------------+---------+-----------
     schema_flag | integer |
     dates_pk    | integer |
     startdate   | date    |
     enddate     | date    |
    View definition:
             SELECT 1 AS schema_flag, dates.dates_pk, dates.startdate, dates.enddate
               FROM schema1.dates
    UNION ALL
             SELECT 2 AS schema_flag, dates.dates_pk, dates.startdate, dates.enddate
               FROM schema2.dates;
    
    test=*#
    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  2. #12
    derLars ist offline Neuer Benutzer
    Registriert seit
    23.11.2009
    Beiträge
    11

    Standard

    Das sieht sehr gut aus, ich denke das ist die Lösung für das Problem. Ich baus gleich mal ein. Vielen Dank!

  3. #13
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Zitat Zitat von derLars Beitrag anzeigen
    Ich baus gleich mal ein. Vielen Dank!
    Und danach trittst du den Hersteller der Software?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  4. #14
    derLars ist offline Neuer Benutzer
    Registriert seit
    23.11.2009
    Beiträge
    11

    Standard

    Als der Hersteller letztes Mal hier war hatte ich ihm schon hochachtungsvoll gesagt: "Sie haben ganz schön Mut hier aufzutauchen".

    Aber in der nächsten Version wird alles besser - komplette Neuprogrammierung von Grund auf. War die richtige Entscheidung.

    Habs übrigens eingebaut und funktioniert super - nochmals vielen Dank!

  5. #15
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Zitat Zitat von derLars Beitrag anzeigen
    Aber in der nächsten Version wird alles besser - komplette Neuprogrammierung von Grund auf. War die richtige Entscheidung.
    Definitiv.

    Wem darf ich da mehr über PostgreSQL beibringen? ;-)
    Damit es das nächste Mal wirklich richtig ist.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  6. #16
    derLars ist offline Neuer Benutzer
    Registriert seit
    23.11.2009
    Beiträge
    11

    Standard

    Das muss leider ein Geheimnis bleiben.

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum