C# - Anzahl Datensätze ermitteln

Norbert Eder

Erfahrenes Mitglied
Wieso arbeitest du hier nicht mit Autowerten? Dann hast du dieses Problem nicht. Einfach einen Primary Key anlegen und dem den Typ Autowert zuweisen. Damit ist das Problem erledigt.

Wenn mehrere User auf der gleichen Datenbank arbeiten müsstest du sonst ausserdem ständig vor dem Insert die letzte ID Abfragen, da ja mehrere Inserts gleichzeitig passieren könnten.

Ich hoffe das klärt deine Frage (sofern ich dein Problem korrekt verstanden habe).
 

Howie

Erfahrenes Mitglied
Hm, ich muss aber irgendwie die Verbindung sozusagen vom Header-Datensatz
zum Posten-Datensatz bekommen und das sind 2 verschiede Tabellen.
Vielleicht mach ich es auch viel zu kompliziert.

Gruß Howie
 

hagbard_celine

Mitglied
@Norbert Eder
Norbert Eder hat gesagt.:
Machst einfach noch eine WHERE Klausel dazu und schon ist es eine Abfrage :p
Was der unterschied zwischen einer Tabelle und einer Abfrage ist, ist mir wohl bewusst! Hast du auch schon mal daran gedacht das bei hoch frequentierten DBs, die Anzahl der Resultate von z.B. "SELECT * FROM Table;" und "SELECT COUNT(*) FROM Table;" unterschiedich sein können?
 

Norbert Eder

Erfahrenes Mitglied
1) Wir sprechen hier von Access. Wird wohl eher kein Problem mit einer "hochfrequentierten Datenbank" sein.
2) Er will die Anzahl der Datensätze. Warum also ein Select * From ... wenn er nur ein Count braucht?
3) Und was willst du mir damit sagen, dass Select * unterschiedliche Ergebnisse zu Select Count(*) bringen kann? Dass er einen Primary Key verwenden soll? Wenn ja, dann liegst du richtig.

Weitere Spekulationen machen keinen Sinn, ohne die wahren Hintergründe bzw. Gegebenheiten zu kennen.
 

Howie

Erfahrenes Mitglied
Ich muss zugeben, es ist mir nicht bekannt das es zu verschieden
Ergebnisse kommen kann. Ich bin auch nicht so tief im Thema, bin da
zimlich neu drinn. Ich denke, auch bei einer Abfrage muss ich ein Kriterium
haben was beide Tabellen verbindet. So dachte ich an den Autowert des neuen
Header-Datensatzes und wollte ihn einfach in den Posten-Datensatz wenn er
angelegt wird, übergeben.

Gruß Howie
 

Norbert Eder

Erfahrenes Mitglied
Vielleicht solltest du kurz deine Struktur der Tabellen zeigen. Ich hab das jetzt so verstanden:

Header-Datensatz
|- Posten 1
|- Posten 2
|- Posten 3
Header-Datensatz
|- Posten 1


Und du willst jetzt einfach nur wissen, wieviele Posten Header Datensatz 1 hat? Korrekt?

Unter der Annahme dass dein Headerdatensatz einen folgenden Aufbau hat (Name tHeader):
ID | Feld 1 | Feld 2 | Feld 3

Und dein Posten-Datensatz folgenden Aufbau (Name tPosten)
ID | HeaderID | Feld 1 | Feld 2

Dann würde die Abfrage so lauten:
Code:
SELECT tHeader.id, count(*) from tHeader, tPosten where tposten.headerid = theader.id GROUP BY tHeader.ID ORDER BY tHeader.ID

Ausgabe:
ID Anzahl
1 2
2 1


Ist es das was du brauchst?
 

Howie

Erfahrenes Mitglied
Hallo,

und Sorry, habe jetzt erst gesehen das noch eine Antwort gekommen ist.
Vielleicht drücke ich mich wirklich nicht richtig aus. Ich habe eine Tabelle
Arbeitstage : id, fld_datum, feld_stelle. Jetzt gibt es noch eine 2 Tabelle die
Posten heißt mit den Feldern : id, fld_posten, fld_anfangzeit, fld_endzeit, fld_stunden.
Nun zu meinen Problem was ich leider immer noch nicht gelöst habe. Eigentlich möchte
ich den id - Wert von Tabelle Arbeitstage in den dazugehörigen Posten bekommen.
Dieses müsste in das Feld fld_posten rein. Die Felder id sind AutoWerte.
Somit hätte ich die Verbindung der beiden Tabellen für weiter Aktionen.
Vielleicht hat einer ein Lösung für mich. Vielleicht denke ich aber auch zu kompliziert.

Gruß Howie
 

hagbard_celine

Mitglied
Ich kenne mich jetzt mit Access leider kaum aus, aber ich würde mal volgende dinge versuchen.

1. In MySQL gibt es LAST_INSERT_ID(), die Funktion liefert den letzten Autowert zurück, vieleicht gibt es sowas auch in Access.
2. Ruf einfach mit SELECT MAX(Id) FROM HaubtTabelle den höchsten (letzten eingefügten) Autowert ab. Geht jedoch nur wenn nur 1 Client gleichzeitig arbeitet.
 

Neue Beiträge