Werte aus zwei Tabellen verbinden
-
Guten Morgen!
In meiner Anwendung greife ich auf zwei Tabellen zu.
Mit dem 1. SQL Statement rufe ich in der Tab1 (tblData) über ein Array, das die ID enthält, die Benennung ab.
Mit dem 2. Statement rufe ich alles aus der Tab2 (tblWerte) ab.
Nun soll, zu allen Werten aus der Tab2, die entsprechende Benennung aus der Tab1 in einer Tabelle geschrieben werden.Mit meinem Code würde das auch fast funktionieren, nur wird dabei immer nur nach der Benennung zur ersten ID gesucht.
Das Problem ist, dass wenn ich mitwhile (dr.Read()
lese, dass ich dann mein SQL Statement nicht mehr aufrufen kann um mein Array um 1 zu erhöhen.
Wie muss ich das machen, bzw. was muss ich an meinem Code ändern??
Ich hoffe mein Problem ist einigermaßen verständelich?!?!
DANKE für Eure Hilfe!
..... MySqlCommand cmd2 = new MySqlCommand("SELECT ben FROM tblData WHERE ID = '" + arrWert[n].ToString() + "';", conn2); dr2 = cmd2.ExecuteReader(); MySqlCommand cmd = new MySqlCommand("SELECT * FROM tblWerte WHERE p_ident = '" + ID + "' AND kategorie = " + kategorie + ";", conn); dr = cmd.ExecuteReader(); while (dr.Read() & dr2.Read()) { n++; if (dr.IsDBNull(1) == false & dr.IsDBNull(2) == false & dr.IsDBNull(3) == false & dr.IsDBNull(4) == false & dr2.IsDBNull(0) == false) { Label pos = new Label(); pos.Text = dr.GetString(4); tblAnzeigen.Controls.Add(pos, 0, x); .... n++; x++;
-
Du brauchst nur einen einzigen Select mit einem Outer-Join.
So in der Art:
"SELECT d.ben, w.* FROM tblData d, tblWerte w WHERE d.ID = '" + arrWert[n].ToString() + "' AND d.ID = w.p_ident AND kategorie = " + kategorie
-
Ok, ich hab's jetzt mal in diese Richtung versucht. Leider habe ich immer noch das Problem, dass ich mein Array nicht hoch zählen kann. D.h. den ersten Wert den er liest arrWert[n] übernimmt er für alles.
Eine for-Schleife bringt irgendwie auch nichts und wenn ich n++ am Ende der while-Schleife mache, dann bringt das ja auch nichts.
Ich hoffe Du verstehst das Problem?!? Danke!
-
foreach(Object val in arrWert) { MySqlCommand cmd = new MySqlCommand("..." + val.ToString() + "...") dr = cmd.ExecuteReader(); while (dr.Read()) { ... } }
Geht natürlich auch mit einer normalen for-Schleife:
for(int n=0; n<arrWert.Count; n++) { MySqlCommand cmd = new MySqlCommand("..." + arrWert[n].ToString() + "...") dr = cmd.ExecuteReader(); while (dr.Read()) { ... } }
Dir scheinen noch grundlegende Programmierkenntnisse zu fehlen...