SQL "INNER JOIN"

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Kalle.

    SQL "INNER JOIN"

    Hallo zusammen,

    habe mal wieder ein Problem:
    Ich habe zwei Datenbanken.
    In einer Datenbank sind die Artikel.
    Diese Datenbank hat nur eine Tabelle "Artikel", in dieser ist unter anderem die Spalte [SP_Numer] und diverse andere Spalten.
    In einer anderen Datenbank sind zwei Tabellen:
    "Vorlage", dort sind die [SP_Nummer] und diveres ander Spalten
    "Bauteil", dort sind die Spalten aus der Vorlage, Spalten aus "Artikel" und natürlich die [SP-Nummer].
    Die SP_Nummer ist die Schlüsselnummer, (ID)
    Ich will jetzt die Tabelle "Bauteil" mit den Daten aus der "Vorlage" und den dazu gehörenden Einträgen auf der Tabelle "Artikel" (andere Datenbank) füllen.
    Nun steht im Internet unendlich oft:

    INSERT INTO TargetTable SELECT ... FROM SourceTable1INNER JOIN SourceTable2 ON ...

    Die TargetTable und Sourcetable sind meine Bauteil und Vorlage, die Sourcetable2 ist die Tabelle Artikel.
    Die eine DB mit den Tabellen "Vorlage" und "Bauteil" öffne ich mit:

    Quellcode

    1. con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Altium\Altium_DB-Tool\Access\Testverzeichnis_Database\IftestAltiumDatabaseNeu.accdb"
    2. cmd.Connection = con
    3. con.Open()


    aber wie erkläre ich dem SQL, wo er die Tabelle "Artikel" findet? Diese ist ja in einer anderen Datenbank, der Pfad und der Name der Datenbank muss den System ja bekannt sein.
    Wie ist da der Syntx?
    Kann mir da jemand auf die Sprünge helfen?

    Gruss und Danke

    Kalle
    Du könntest dir eine weitere Access Datenbank erstellen und in dieser Verknüpfungen zu den Tabellen aus den anderen Datenbanken einfügen.
    Access, neue Datenbank erstellen > Externe Daten > Neue Datenquelle > Aus Datenbank > Access > Verknüpfung (das Untere).
    Dann stellst du den Connectionstring auf die Verknüpfungsdatenbank um.
    MSSQL unterstützt Cross-Databases-Querys (Name habe ich mir gerade ausgedacht)

    also Port auf einen MSSQL-Server :D

    Quellcode

    1. select
    2. m.NAME,
    3. m.COUNTER,
    4. m2.NAME,
    5. m2.COUNTER
    6. from Datenbank1.dbo.ZAEHLERTABELLE m
    7. inner join Datenbank2.dbo.ZAEHLERTABELLE m2 on m.ID = m2.ID