Announcement

Collapse
No announcement yet.

SQL Abfrage; erstellen einer neuen Tabelle (dyn)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Abfrage; erstellen einer neuen Tabelle (dyn)

    Hallo,

    ich hab eine kleine Frage:

    Ich habe eine Datenbank (MS SQL 2006 SQL Server) wo unter anderem auch Adressen drinn verwaltet werden sollen.
    Jetzt möchte ich die Adresse ausgeben. (Bemerkung: Eine Person kann mehrere Adressen haben und umgekehrt.)
    (Siehe Bild) Ich muss also eine SQL-Abfrage machen und eine Neue Tabelle erstellen (dynamisch, also es soll keine weitere Tabelle aufgebaut werden) wo die Werte (Ergebnisse der Abfrage) gespeichert werden.



    Wie mach ich das??

    Gruß Blinzler.

  • #2
    hat denn keiner einen Ansatz für mich

    Comment


    • #3
      Hallo,

      Eine View wuerde dir nicht weiterhelfen?
      Ich meine, dass du anstelle einer neuen (virtuellen) Tabelle einfach eine View erstellst.
      *-- robert.oh. --*

      Comment


      • #4
        Hallo,

        hat denn keiner einen Ansatz für mich
        die gestellte Frage nach dem "Wie?" verschweigt die viel wichtigere Information über das "Warum?". Von der Theorie her ist es eigentlich ganz einfach: In einer Datenbank muss zwischen drei Arten von Relationen (Tabellen) unterschieden werden:

        1. Die Basistabelle ist eine reale, tatsächlich in der Datenbank vorhandene Tabelle.

        2. Die Sichttabelle (View) ist eine persistente virtuelle, nur scheinbar in der Datenbank vorhandene Tabelle, die nur die Daten von Basistabellen abbildet.

        3. Die Ergebnisrelation ist eine transiente virtuelle Tabelle, die als Ergebnis einer SELECT-Abfrage eine Untermenge von Daten aus einer Basis- oder Sichttabelle abbildet:
        • Eine Selektion liefert über ein WHERE-Kriterium nur bestimmte Datensätze der abfragten Tabelle(n) zurück.
        • Eine Projektion liefert nur ausgewählte Spalten der abgefragten Tabelle(n) in frei definierbarer Reihenfolge zurück.
        • Ein Join liefert Spalten aus verschiedenen abgefragten Tabellen zurück.


        Für den Benutzer ist zwischen einer Basistabelle und einer Sichttabelle kein Unterschied sichtbar, beiden Typen werden in den Systemtabellen der Datenbank vermerkt.

        Die Anforderung "Jetzt möchte ich die Adresse ausgeben" kann jedoch bereits über die Ergebnisrelation (also über eine ganz schlichte SELECT-Abfrage) erfüllt werden. Da in einer relationalen Datenbank die Daten nicht redunant gespeichert werden sollten, macht das Speichern der Ergebnismenge in einer neuen Tabelle keinen Sinn.

        Comment


        • #5
          So das mit dem View hat geklappt.
          Ich habe ein View(Sicht) erstellt und es funktioniert.
          Allerdings muss ich noch irgendwie die Personen (-Anzeige) mit dem PersonenadressVIEW verknüpfen, wenn ich also in der navigation weiter springe und jetzt die Person mit der personenid 2 angezeigt wird, sollen mir alle adressen angezeigt werden die die personenid 2 haben.
          Wie mach ich denn sowas.
          Attached Files

          Comment


          • #6
            hat jemand nen tip für mich, bitte

            Comment


            • #7
              Hallo,

              für die synchronisierte Anzeiger der Master-/Detail-Daten in der Benutzeroberfläche gibt es zwei Alternativen:

              a) Automatische Synchronisation der Datenbindung

              In diesem Fall müssen die Ergebnismengen beider Tabellen in separate DataTable-Instanzen im DataSet abgelegt werden (kein JOIN). Zwischen beiden Tabellen wird über den DataSet-Designer von Visual Studio eine DataRelation hergestellt. Das Data Source-Fenster (Datenquellen-Fenster) von Visual Studio zeigt die Tabellen in einer eingerückten Form an (d.h. dort ist die Beziehung sichtbar). Wird nun über Drag&Drop zuerst die Master-Tabelle und danach die eingerückt angezeigte Detail-Tabelle auf das Formular gezogen, synchronisiert die Datenbindung automatisch die Anzeige der Detail-Datenmenge (d.h. es sind nur die Detail-Datensätze sichtbar, die zum ausgewählten Master-Datensatz passen).

              b) Manuelle Synchronisation

              Wenn aus irgend einem Grund die automatisch synchronisierte Datenbindung nicht genutzt werden kann, kann das eigene Programm nach jedem Wechsel der Position der Master-Datenmenge die Detail-Datenmenge filtern. Dazu kann die Filter-Eigenschaft der BindingSource-Komponente verwendet werden.

              Comment


              • #8
                Ach mensch,

                jetzt klappts :-), tut mir leid falls ich euch mit diesen labidaren fragen löchere.

                Ich danke dir Andreas

                Gruß Blinzler

                Comment

                Working...
                X