Ankündigung

Einklappen
Keine Ankündigung bisher.

Aus einer Datenbank A den der Datenbank B ermitteln und im selben Query verwenden.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Aus einer Datenbank A den der Datenbank B ermitteln und im selben Query verwenden.

    Hallo zusammen,

    ich möchte gerne aus einer Datenbank A den Namen für die Datenbank B ermitteln, damit ich Werte aus der Datenbank B ausgeben kann.

    Konkret:
    Code:
    select *
    From
        (Select DB from Datenbanken where db_name = '2').Info
    Ich möchte alle Werte aus der Tabelle Info. Allerdings kenne ich die Datenbank nicht, sondern muss sie durch einen Select erfragen. Der Aufbau der Datenbank ist immer der Gleiche.

    Ich hoffe, ihr könnt mein Problem nachvollziehen (Bei Google ging das Verstehen schief).

    Kann mir einen Tipp geben, wie ich das Problem lösen kann (Ich möchte ungern, 2 SQL Abfragen dafür benutzen).

    Viele Grüße aus dem Ruhrpott

    Tobias

  • #2
    Sieht nach einem verkorksten Datenbankdesign aus. Ich würde schon weiter vorne ansetzen und das in Ordnung bringen.

    Kommentar


    • #3
      Zeige den SQL Dump mit einigen Beispieldaten. Beschreibe anschliessend was die Ausgabe sein soll oder schreibe die Ausgabe die du dir vorstellst auf.

      Aus dem was du da schreibst ergeben sich nur Fragezeichen in meinem Kopf.

      Kommentar


      • #4
        Zitat von protestix Beitrag anzeigen
        Aus dem was du da schreibst ergeben sich nur Fragezeichen in meinem Kopf.
        Eher Ausrufezeichen. Dafür, daß das Murks ist. Ein Select * from <Variable> kann vom Planner nicht verstanden werden, weil zur Planungszeit die Variable nicht bekannt ist. Das geht nur über dynamisches SQL Ein Beispiel dafür ist hier:
        https://www.postgresql.org/docs/11/p...-EXECUTING-DYN
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Du möchtest eine bestimmte Tabelle abfragen ohne den Datenbanknamen zu kennen? Kann mir nicht so richtig vorstellen wann dies benötigt wird außer bei einen völlig verkorksten Datenbankdesign.

          Unter MySQL muss für ein "Select * from <Variable>" die SQL Statement Syntax bemüht werden. Das folgende funktioniert nur, wenn die Tabelle 'cars' in genau einer Datenbank vorhanden ist:
          Code:
          SET db = (
            Select TABLE_SCHEMA
            FROM information_schema.TABLES
            WHERE TABLE_NAME = 'cars' AND TABLE_TYPE = 'BASE TABLE'
          );
          SET @q = CONCAT('SELECT * FROM ', db, '.cars');
          PREPARE stmt FROM @q;
          EXECUTE stmt;
          DEALLOCATE PREPARE stmt;
          Abgesehen davon das ich akretschmer zeigen kann das so etwas auch unter MySQL machbar ist sehe ich bei dieser "Lösung" jedoch keinerlei praktischen Nutzen.

          LG jspit
          ​​​​​​​


          Kommentar

          Lädt...
          X