Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Binding aus mehreren JOIN
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

Binding aus mehreren JOIN

beantworten | zitieren | melden

Hallo

Ich habe ein Problem mit JOIN und Binding.

Datenbank sieht so aus

TablePersonal :
Vorname | BauvorhabenID_Mon | BauvorhabenID_Tue | BauvorhabenID_Wed | ...
Hans | 1 | 2 | 1 | ...
Sepp | 2 | 1 | 3 | ...


TableBauvorhaben:
BauvorhabenID | Name
1 | Berlin
2 | München
3 | Hamburg


SQL:

"SELECT * FROM TablePersonal LEFT JOIN TableBauvorhaben ON TablePersonal.BauvorhabenID_Mon = TableBauvorhaben.BauvorhabenID AND TablePersonal.BauvorhabenID_Tue = TableBauvorhaben.BauvorhabenID AND TablePersonal.BauvorhabenID_Wed = TableBauvorhaben.BauvorhabenID";


<DataGridTextColumn x:Name="BaustelleMon" Binding="{Binding Name}" Header="Montag"/>
<DataGridTextColumn x:Name="BaustelleTue" Binding="{Binding Name}" Header="Dienstag"/>
<DataGridTextColumn x:Name="BaustelleWed" Binding="{Binding Name}" Header="Mittwoch"/>

Funktioniert nur ohne JOIN, problem ist wohl das es den Namen öfters gibt?


Die Ausgabe solte sein:

Hans | Berlin | München | Berlin | ...
Sepp | München | Berlin | Hamburg | ...

Hoffe ich konnte das so verständlich erklären?
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von TheQPat am .
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10042

beantworten | zitieren | melden

Select * ist nie eine gute Idee, wenn du die Felder ausschreibst, kann du aus as benutzen.

Ganz abgesehen davon ist etwas wie BauvorhabenID_Mon, BauvorhabenID_Tue auch ein Anzeichen für eine falsche Architektur.
Das sieht eher nach N:M aus, dann ergibst sich das Problem auch nicht mehr .
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Wie solte die Architektur denn sonst aussehen wenn ich für jeden Wochentag einen andere Baustelle zuweißen möchte?

ich weiß das Select * keine gute wahl ist, funktioniert aber auch nicht wenn ich alle selects angebe


was ist N:M???
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3946

beantworten | zitieren | melden

Du arbeitest mit Datenbanken und kennst nicht die verschiedenen Arten von Kardinalität (Datenbankmodellierung)?
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10042

beantworten | zitieren | melden

Wie Th69 schon sagte, Grundlagen sind wichtig.

In deinem Fall gäbe es eine Tabelle mit Personal, Bauvorhaben und eine mit der Beziehung dazwischen.

Was machst du z.b. wenn eine Person morgens auf Baustelle A ist und nachmittags auf B, oder wenn sie 3-4 am Tag machen?

Mit der Mappingtabelle kannst du das alles abfrühstücken.
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Zitat von FZelle
Wie Th69 schon sagte, Grundlagen sind wichtig.
Da gebe ich dir voll und ganz recht, mit diesen binding zeug komme ich einfach nicht klar!
Zitat von FZelle
In deinem Fall gäbe es eine Tabelle mit Personal, Bauvorhaben und eine mit der Beziehung dazwischen.

Das mache ich doch mit JOIN?
Zitat von FZelle
Was machst du z.b. wenn eine Person morgens auf Baustelle A ist und nachmittags auf B, oder wenn sie 3-4 am Tag machen?

Super Idee, aber nicht notwendig für mein Einsatzgebiet ;)
Zitat von FZelle
Mit der Mappingtabelle kannst du das alles abfrühstücken.

Wie sieht eine Mappingtabelle aus? wo liegt darin der nutzen?
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Zitat von Th69
Du arbeitest mit Datenbanken und kennst nicht die verschiedenen Arten von Kardinalität (Datenbankmodellierung)?

Die arten waren mir bekannt nur die Bezeichnung nicht.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15510
Herkunft: BW

beantworten | zitieren | melden

Zitat von TheQPat
Wie sieht eine Mappingtabelle aus? wo liegt darin der nutzen?
Zitat von TheQPat
Die arten waren mir bekannt nur die Bezeichnung nicht.

Na, wenn die Arten Dir bekannt sind, dann kennst Du doch auch eine Mapping Tabelle: das ist die Relationstabelle; oder im Wiki-Eintrag als Hilfstabelle bezeichnet.
Zitat
Oft werden für die Bezeichnung der die n:m-Beziehung realisierenden Tabelle die Bezeichnungen der beiden daran beteiligten Tabellen verwendet; bei den Tabellen „Student“ und „Professor“ könnte so die zusätzliche Tabelle „StudentProfessor“ heißen.

Denke auch, dass Du evtl. nochmal bisschen Zeit in die Grundlagen stecken solltest ;-)
Gerade beim Bottom Up Design, wie Du hier offenbar vorgehst, ist es extrem wichtig, dass die Datenstruktur grundlegend schon stimmt, bevor man weiter macht.
Ansonsten beginnt man meist von vorn.
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Soweit habe ich das Verstanden wie ihr das meint, aber ich verstehen denn Sinn nicht für max. 6 zusätzliche werte eine Hilfstabelle anzulegen blos weil ich durch das JOIN nicht weiß und es nicht hinbekomme die ausgabe in ein DataGrid (wpf) auszugeben (der zusätzliche daten aus JOIN) ? ohne JOIN spreche ich den Namen ja direkt an durch das JOIN weiß ich aber nicht wie.

bei einem einfachen JOIN klappt es ja nur bei mehren JOIN nicht. Gibt es dafür eine Lösung oder wollt ihr mir sagen das dies nicht möglich ist und man mit einer Hilfstabelle arbeiten muss?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15510
Herkunft: BW

beantworten | zitieren | melden

Bei einer N:M Relation brauchst Du bei einer relationalen Datenbank zwingend immer eine Mapping-Tabelle; egal wie viele beschreibende Eigenschaften (Deine hast sie"zusätzliche Werte" genannt) Du hast. Auch ohne "zusätzliche Werte" erfordert diese Relationsart das.

Und evtl. mag ich das auch falsch verstehen; aber so wie sich das liest hast Du eben eine N:M Relation.
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Meiner Ansicht nach habe ich das nicht



Ein Mitarbeiter hat Montag und Dienstag und Mittwoch .... eine Baustellen ID

Tabelle: Sepp | 1 | 3 | 2 | .... jetzt will ich doch nur wissen wie der Name der Baustelle am Montag, Dienstag und am Mittwoch etc ist ... drum nur einen JOIN in die Tabelle mit den Baustellen.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15510
Herkunft: BW

beantworten | zitieren | melden

Mitarbeiter ------ Tag ------ Baustelle

Das ist eine ganz simple N:M Beziehung.

Ich sehe hier keine normale Möglichkeit, wie das mit einer 1:N abdeckbar sein soll.
Kannst ja den Tag weder sinnvoll an den Mitarbeiter noch an der Baustelle ablegen.
Sonst würde das ja aus Mitarbeitersicht für jede Baustelle gelten oder aus Bestellensicht für jeden Mitarbeiter.

Du hast ne ganz klassische N:M Relation.
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Mitarbeiter Tag 1 ------ Baustelle1
Mitarbeiter Tag 2 ------ Baustelle1
Mitarbeiter Tag 3 ------ Baustelle3



Jeder Mitarbeiter hat jeden Wochentage Eine Feste Baustelle. Die Baustelle ist fest an einen Mitarbeiter gebunden.

im eigentlichen sinne geht es ja (ob es jetzt logisch ist oder nicht) nur darum aus der Mitarbeiter Tabelle in der auch die BaustellenID pro Wochentag drin ist aus der ID den Namen zu Hohlen und das in ein DataGrid zu schmeißen.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15510
Herkunft: BW

beantworten | zitieren | melden

Also ich kann Dir nicht mehr sagen als dass das ein Missverständnis Deinerseits ist und Du wirklich eine N:M Relation hast und Du nicht den Tag "einfach so" in der Mitarbeiter-Tabelle speichern kannst. Oder willst Du wirklich jeden Mitarbeiter mehrfach anlegen: pro Tag einen Eintrag?
Genau deswegen gibt es Kardinalitäten und Datenbank-Normalisierung.

Kann Dich auch nicht zwingen; Dich nur drauf hinweisen: Du hast eine N:M Relation.
Aber ich fürchte, dass Dir da einfach die Basics fehlen. Kann da leider auch nicht mehr sagen; und ich sag das ja nicht um Dich zu ärgern.
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

ich glaube wir reden total aneinander vorbei

Tabelle Baustellen sieht so aus:

1 | Berlin
2 | München
3 | Hamburg
4 | Stuttgart


die Mitarbeiter Tabelle sieht so aus (oder nennen wir sie meinentwegen Zuordnungs Tabelle)

Hans | 1 | 3 | 2 | 5 | 3 | 2 | 5 |
Sepp | 3 | 2 | 2 | 3 | 2 | 5 | 3 |
Franz | 3 | 2 | 4 | 3 | 2 | 5 | 2 |


diese Tabelle soll in ein DataGrid blos eben nicht als Zahl sondern als Text.

Ist so etwas wirklich so schwer in C# und WPF zu realisieren?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15510
Herkunft: BW

beantworten | zitieren | melden

Hä, Du hast für jeden Tag eine eigene Spalte?
Dann hast Du keine N:M Relation, sondern einfach ein dicken Fehler im Sinne der Datenbank-Normalisierung ;-)
Weil man das auch nicht macht haben wir hier auch diese Darstellung nicht verstanden. Wie es richtig geht haben wir Dir nun (mehrfach) gesagt.
Aber nun gut; akzeptieren musst es wie gesagt selbst.
Zitat
Ist so etwas wirklich so schwer in C# und WPF zu realisieren?
Mit C# hat das nichts am Hut. Ist ja nur eine Sache der Relation und der Abfrage und das ist mit allen Programmiersprachen gleich.

Den Wochentag kann man simpel über eine Enum-Darstellung als Ziffer in der DB abspeichern.
Im Code haste dann einfach das Enum und kannst in der UI einfach das Enum mit Hilfe von DateTimeFormatInfo.CurrentInfo.GetDayName( DB-Wert hier ) in einen lokalisierten Text (Deutsch Englisch... was auch immer) übersetzen und anzeigen.

Willst Du ohne Enum sondern nur mit Int-Ziffern arbeiten, dann musst das halt selbst umsetzen; in WPF und dem DataGrid zB über einen ValueConverter.
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Sorry aber wir reden hier komplett aneinander vorbei.



Zitat von Abt
Hä, Du hast für jeden Tag eine eigene Spalte? :baby:
Dann hast Du keine N:M Relation, sondern einfach ein dicken Fehler im Sinne der Datenbank-Normalisierung ;-)
Weil man das auch nicht macht haben wir hier auch diese Darstellung nicht verstanden. Wie es richtig geht haben wir Dir nun (mehrfach) gesagt.
Aber nun gut; akzeptieren musst es wie gesagt selbst.


Warum darf ich nicht für jeden Tag eine Spalte haben? es geht um 6 Tage. Es ist nur eine Wocheneinteilung, es geht hier um geringe Datenmengen!

drum habe ich es ja auch ins WPF Forum geschrieben da es um ein Binding geht, nicht um Datenbanken Strukturierung etc.


Zitat von Abt
Den Wochentag kann man simpel über eine Enum-Darstellung als Ziffer in der DB abspeichern.

Im Code haste dann einfach das Enum und kannst in der UI einfach das Enum mit Hilfe von DateTimeFormatInfo.CurrentInfo.GetDayName( DB-Wert hier ) in einen lokalisierten Text (Deutsch Englisch... was auch immer) übersetzen und anzeigen.

auch nichts neues, wie jetzt schon öfters geschrieben mach ich das doch.


Zitat von Abt
Willst Du ohne Enum sondern nur mit Int-Ziffern arbeiten, dann musst das halt selbst umsetzen; in WPF und dem DataGrid zB über einen ValueConverter.

Ich will einfach NUR meinen Baustellennamen zur passenen Ziffer wissen. (siehe meine SQL abfrage). Aber jetzt zum eigentlichen Problem. Wie krieg ichs ins DataGrid?
private Nachricht | Beiträge des Benutzers
Wilfried
myCSharp.de - Member



Dabei seit:
Beiträge: 74
Herkunft: Radeberg

beantworten | zitieren | melden

Hallo TheQPat,

indem du die Daten dem ViewModel übergibst. Dort bereitest du deine Daten entsprechend deiner Wünsche auf und füllst damit zum Beispiel eine ObservableCollection. Diese bindest du an die ItemsSource des DataGrid.
-Wer lesen kann, ist klar im Vorteil
-Meistens sitzt der Fehler vorm Monitor
-"Geht nicht" ist keine Fehlermeldung !

GidF
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15510
Herkunft: BW

beantworten | zitieren | melden

Du hast von mehreren Joins gesprochen, die es in Deiner Sitation gar nicht geben kann.
Das hat vermutlich auch zum Missverständnis beigetragen.

In diesem Fall ist ja - gedanklich, wenn es gehen würde - nur ein Join "notwendig" und Du kannst alles laden.
Zitat
drum habe ich es ja auch ins WPF Forum geschrieben da es um ein Binding geht, nicht um Datenbanken Strukturierung etc.

...

Ich will einfach NUR meinen Baustellennamen zur passenen Ziffer wissen. (siehe meine SQL abfrage). Aber jetzt zum eigentlichen Problem. Wie krieg ichs ins DataGrid?
Deine Frage, Du wiederholst Dich hier, ist aber SQL bezogen - nicht WPF.
Daher hab ich das entsprechend verschoben.


Dass bei Deinem Join kein Ergebnis kommt liegt daran, dass der Join hier eine Und-Einschränkung darstellt; Du holst Dir da keine Daten aus Deinen Referenzen.
Das würde man bei N:M so machen; geht in so einem Fall aber nicht. Du willst Referenzen laden und kein Matching durchführen.
Siehe auch Basics zu Join: https://www.w3schools.com/sql/sql_join.asp

Da Du nur wenige Daten hast und Optimierung hier eh nicht so angesagt ist; machs über nen Subselect statt nen Join.
SELECT Vorname, Wochentag, MontagId, (SELECT Stadt FROM Baustellen WHERE ID = BaustellenMontagId) AS BauStName_Montag FROM...

Ist halt ein ekliger Query, weil eklige Struktur; sollte aber problemlos die gewünschten Daten liefern.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3946

beantworten | zitieren | melden

Hallo TheQPat,

und daran sieht man auch, wie umständlich es bei deiner aktuellen DB-Struktur ist. Du mußt für jeden Wochentag extra eine eigene SQL-Anweisung erstellen, anstatt den Tag einfach als Parameter der Abfrage zu haben.
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

In meinem ersten Beitrag hatte ich ja meinen Code gepostet
SELECT * FROM TablePersonal LEFT JOIN TableBauvorhaben ON TablePersonal.BauvorhabenID_Mon = TableBauvorhaben.BauvorhabenID AND TablePersonal.BauvorhabenID_Tue = TableBauvorhaben.BauvorhabenID AND TablePersonal.BauvorhabenID_Wed = TableBauvorhaben.BauvorhabenID";

das ganze umbauen auf ein , würde auch nicht helfen?

wenn ich nur das probiere funktioniert es ja:
SELECT * FROM TablePersonal LEFT JOIN TableBauvorhaben ON TablePersonal.BauvorhabenID_Mon = TableBauvorhaben.BauvorhabenID

und ich bekomme meine daten mit
{Binding Name}
Name stammt aus der TableBauvorhaben

Umständliche Tabellen Struktur?
2 Tabellen davon einmal mit 2 Spalten und einmal mit 8 Spalten
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Ich bin gerade dabei euren Ratschlag zu befolgen.

TableBauvorhaben:
ID | NAME
1 | Bauvorhaben Berlin
2 | Bauvorhaben München
3 | Bauvorhaben Hamburg
4 | Bauvorhaben Stuttgart

TableMitarbeiter:
ID | NAME
1 | Hans
2 | Josef
3 | Sepp
4 | Werner

TableHilfstabelle:
ID | BauvorhabenID | MitarbeiterID | DayID
1 | 1 | 1 | 1
2 | 4 | 1 | 2
3 | 2 | 1 | 3
4 | 1 | 1 | 4
5 | 1 | 1 | 5
6 | 2 | 1 | 6
7 | 3 | 2 | 1
8 | 1 | 2 | 2
9 | 2 | 2 | 3
10 | 1 | 2 | 4
11 | 4 | 2 | 5
12 | 3 | 2 | 6

Wie bekomme ich das jetzt sauber in ein DataGrid damit folgende Zeile pro Mitarbeiter ausgegeben wird:


Mitarbeiter Name | Bauvorhaben Name am Montag | Bauvorhaben Name am Dienstag | Bauvorhaben Name am Mittwoch | Bauvorhaben Name am Donnerstag ......
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von TheQPat am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15510
Herkunft: BW

beantworten | zitieren | melden

Die neue Struktur machts nun viel einfacher.
Machst einfach nen Join über die ID aller drei Tabellen und selektierst dann nur noch die Spalten, die Du willst.
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

kannst du mir in etwa verraten wie das SQL Query aussehen müste?

ich glaube mit
SELECT * FROM TableMapping LEFT JOIN TablePersonal ON TableMapping.BauvorhabenID = TablePersonal.BauvorhabenID LEFT JOIN TableBauvorhaben ON TableMapping.BauvorhabenID = TableBauvorhaben.BauvorhabenID
bin ich voll daneben
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15510
Herkunft: BW

beantworten | zitieren | melden

Ungefähr so:
SELECT
   M.Name, Map.Tag,  B.Stadt
FROM
   Mitarbeiter M
INNER JOIN
   Mapping Map 
   ON Map.MitarbeiterId = M.Id
INNER JOIN
   Baustellen B
   ON Map.BaustellenId = B.Id
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Das ist noch nicht ganz das was ich mir vorstelle, ich bekomme ja jetzt pro Mitarbeiter und Wochentag eine Zeile
"SELECT M.Vorname, Map.DayID,  B.Name FROM TablePersonal M INNER JOIN TableMapping Map ON Map.MitarbeiterId = M.Id INNER JOIN TableBauvorhaben B ON Map.BauvorhabenID = B.BauvorhabenID"

<DataGrid x:Name="DataGridView1" AutoGenerateColumns="false" Margin="10,11,10,10" ItemsSource="{Binding}" SelectedItem="{Binding SelectedItem}">
    <DataGrid.Columns>
        <DataGridTextColumn x:Name="Vorname" Binding="{Binding Vorname}" Header="Vorname"/>
        <DataGridTextColumn x:Name="BaustelleMon" Binding="{Binding BaustelleMontag}" Header="Montag"/>
        <DataGridTextColumn x:Name="BaustelleTue" Binding="{Binding BaustelleDienstag}" Header="Dienstag"/>
        <DataGridTextColumn x:Name="BaustelleWed" Binding="{Binding BaustelleMittwoch}" Header="Mittwoch"/>
        <DataGridTextColumn x:Name="BaustelleThu" Binding="{Binding BaustelleDonnerstag}" Header="Donnerstag"/>
        <DataGridTextColumn x:Name="BaustelleFri" Binding="{Binding BaustelleFreitag}" Header="Freitag"/>
        <DataGridTextColumn x:Name="BaustelleSat" Binding="{Binding BaustelleSamstag}" Header="Samstag"/>
    </DataGrid.Columns>
/DataGrid>
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von TheQPat am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15510
Herkunft: BW

beantworten | zitieren | melden

Zitat von TheQPat
Das ist noch nicht ganz das was ich mir vorstelle, ich bekomme ja jetzt pro Mitarbeiter und Wochentag eine Zeile

Korrekt. So funktioniert Join.
Mergen machste im Programmcode.
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
Mergen machste im Programmcode.

Und wie soll das bitte funktionieren? Jetzt hast du mich total verwirrt

Ich muss jetzt die Zeilen in eine Spalte schieben?

Edit: hab nochmal ein Bild angehängt wie es aussehen soll
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von TheQPat am .
Attachments
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1767
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Für die Anzeige hättest du doch alle Daten über die SQL Anweisung erhalten.
Du müsstest jetzt nur noch hingehen und pro Mitarbeiter (Name) ein Objekt anlegen für die Anzeige.
Dann musst du pro Mitarbeiter alle Relationen mit dem Namen auslesen und die Baustellen anhand des Tages richtig eintragen.
Dürfte im Endeffekt eine foreach Schleife sein.

Hier ein unschönes Beispiel wie es ungefähr ablaufen müsste.


public class MitarbeiterBaustellenRelation
{
    public string Name { get; set; }

    public Tag Tag { get; set; }

    public string Stadt { get; set; }
}

// Verarbeitet die Liste der Relationen und liefert Dummy Mitarbeiter Objekte
public List<Mitarbeiter> ParseMitarbeiterBaustellenRelationen(List<MitarbeiterBaustellenRelation> relationen)
{
    Dictionary<string, Mitarbeiter> bekannteMitarbeiter = new Dictionary<string, Mitarbeiter>();

    foreach(var relation in relationen)
    {
        // Mitarbeiter über den Namen suchen
        if(!bekannteMitarbeiter.TryGetValue(relation.Name, out var mitarbeiter))
        {
            mitarbeiter = new Mitarbeiter();
            mitarbeiter.Name = relation.Name;
            bekannteMitarbeiter[mitarbeiter.Name] = mitarbeiter;
        }

        switch(relation.Tag)
        {
            case Montag:
                mitarbeiter.BaustelleMo = relation.Stadt;
                break;

            case Dienstag:
                mitarbeiter.BaustelleTue = relation.Stadt;
                break;
        }
    }

    return new List<Mitarbeiter>(bekannteMitarbeiter.Values);
}

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
TheQPat
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Zitat von T-Virus
Für die Anzeige hättest du doch alle Daten über die SQL Anweisung erhalten.
Wie meinst du das, bzw auf was beziehst du dich?

Zitat von T-Virus
Du müsstest jetzt nur noch hingehen und pro Mitarbeiter (Name) ein Objekt anlegen für die Anzeige.
Du Meinst aus der Mitarbeiter Tabelle ein Objekt erstellen?

Langsam bin ich am verzweifel :(
private Nachricht | Beiträge des Benutzers