AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# Array füllen mit Daten aus Datenbank (Join)
Thema durchsuchen
Ansicht
Themen-Optionen

Array füllen mit Daten aus Datenbank (Join)

Ein Thema von Matze · begonnen am 11. Nov 2016 · letzter Beitrag vom 12. Nov 2016
 
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Array füllen mit Daten aus Datenbank (Join)

  Alt 11. Nov 2016, 22:22
Datenbank: - • Version: - • Zugriff über: -
Hallo zusammen,

ich habe folgende Datenbanktabellen, bei denen die Datensätze der Prozessdaten über die Kopf-ID mit der Kopfdaten-ID verknüpft sind:

Kopfdaten:
Code:
ID   Datum ...
1    12.11.16
2    13.11.16
Prozessdaten:
Code:
Kopf-ID   Name  Value
1         Kraft   10
1         Druck    2
1         Temp    22
2         Geschw. 110
Ich möchte diese Daten auslesen und eine Liste damit füllen:
Code:
class Data {
    public sting Name;
    public double Value;
}
Dictionary<int, List<Data>> result;
Gefüllt soll das so aussehen (Pseuso-Code):
Code:
[1] =>
    [
        Name = "Kraft"
        Value = 10
    ],
    [
        Name = "Druck"
        Value = 2
    ],
    [
        Name = "Temp"
        Value = 22
    ],
[2] =>
    [
        Name = "Geschw."
        Value = 110
    ],
Nun würde ich gerne wissen, wie man das am besten macht.
Folgende Möglichkeiten fallen mir ein (Pseudo-Code, achtet bitte nicht auf die Syntax o.ä. )

1. Mehrfache Datenbankabfragen, das sind jedoch u.U. sehr viele
Code:
headData = SELECT * FROM Kopfdaten;

foreach (sHeadData in headData) {
    id = sHeadData["ID"];
    values = SELECT * FROM Prozessdaten WHERE Kopf-ID = id;

    valuesParsed = new List<Data>();
    foreach (var sValue in values) {
        valuesParsed.Add(
            new Data() {
                Name = sData["Name"],
                Value = sData["Value"],
            }
        );
    }

    result.Add(id, valuesParsed);
}
2. Eine Abfrage mittels JOIN

Ich denke von der Abfrage her ist es deutlich schneller, aber die Logik für die Aufbereitung kommt mir eher umständlich vor.
Code:
data = SELECT * FROM Kopfdaten k
    INNER JOIN Prozessdaten p
        ON k.ID = p.Kopf-ID;

foreach (var sData in data) {
    id = sData["ID"];

    if (!result.ContainsKey(id)) {
        result.Add(id, new List<Data>());
    }

    result[id].Add(
        new Data() {
            Name = sData["Name"],
            Value = sData["Value"],
        }
    );
}
Ich hoffe, ihr könnt nachvollziehen worum es mir geht und mit idealerweise nennen, wie man das am besten umsetzt. 2 verknpüfte Tabellen hat man ja meist irgendwo und so außergewöhnlich ist die Aufgabenstellung daher nicht, denke ich.

Wie macht ihr sowas?

Grüße
Matze

Geändert von Matze (11. Nov 2016 um 22:25 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz