Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

beim Eintragen in Tabelle automatisch zweite Tabelle füllen
Gehe zu Seite 1, 2  Weiter
 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> SQL und alles rund um Datenbanken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
grybl



Anmeldungsdatum: 02.04.2005
Beiträge: 38

BeitragVerfasst am: 23. Aug 2005 10:36    Titel: beim Eintragen in Tabelle automatisch zweite Tabelle füllen Antworten mit Zitat

Hallo!

Habe folgendes Problem.

Habe zwei Tabellen eine Auftrag, die andere Leistung.
aus Auftrag soll das Soll der Stunden ermittelt werden und aus Leistung das Ist der Stunden und daraus dann, wie viel noch offen ist. Das ist eigentlich kein Problem.

Das Problem tritt nur dann auf, wenn zu einem Auftrag noch keine Leistung erfolgt ist, denn dann gibt es ja noch keinen passenden Datensatz in Leistung.

Jetzt habe ich mir folgendes gedacht: Wenn ein neuer Auftrag eingegeben wird, soll automatisch eine neue Leistung generiert werden mit 0 Iststunden.

Fragen dazu:
1. wie "programmiere" ich das am besten, sicher mit Insert into, aber wie genau weiß ich leider nicht. traurig
2. und wie löse ich das Generieren aus.
3. Vielleicht gibts auch eine andere Lösungsmöglichkeit dazu.

Hoffentlich habe ich mich verständlich ausgedrückt.
Ich wäre sehr dankbar für jeden Tipp. Gott
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kurellajunior
Administrator


Anmeldungsdatum: 14.02.2005
Beiträge: 214
Wohnort: Berlin-Pankow

BeitragVerfasst am: 23. Aug 2005 15:05    Titel: Antworten mit Zitat

Datenbanktechnisch scheint es sinnvoller zu sein die Zeiterfassung in eine Tabelle zu packen. Dann hast Du mit jedem Auftrag automatisch den Eintrag für das Soll, wenn Du den Defaultwert dieser Spalte auf 0 setzt.

Ginge das?

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
grybl



Anmeldungsdatum: 02.04.2005
Beiträge: 38

BeitragVerfasst am: 23. Aug 2005 15:50    Titel: Antworten mit Zitat

Leider blick ich bei deinem Vorschlag nicht ganz durch unglücklich

Die Sollstunden werden bei der Eingabe des Auftrages mit eingegeben. Was bringt mir da der Defaultwert?
Das Problem liegt beim Nichtvorhandensein der dazugehörigen Leistung.

Vielleicht habe ich mich auch unverständlich ausgedrückt.

Beispiel:
Auftrag: Firma X, Mitarbeiter Y 35 Stunden
Leistung: Mitarbeiter Y Firma X 12 Stunden
erscheint dann bei der Abfrage Firma X Mitarbeiter Y Soll 35 Ist 12

habe ich nun aber nur
Auftrag: Firma A, Mitarbeiter B 23 Stunden und keine Leistung, dann erscheint nix und ich hätte gerne das das erscheint: Firma A Mitarbeiter B Soll 23 Ist 0 traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
sommer87



Anmeldungsdatum: 14.02.2005
Beiträge: 36
Wohnort: Hessen (nähe FFM)

BeitragVerfasst am: 23. Aug 2005 19:45    Titel: Antworten mit Zitat

Hi,
ich denke Jan meint, dass es sinvoller wäre die Daten in nur eine Tabelle zu packen anstatt zwei zu verwenden.

Das wäre denke ich auch sinnvoller.

Oder sollen es umbedingt zwei Tabellen sein, die miteinander verknüpft werden?

_________________
mfg
sommer87
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
grybl



Anmeldungsdatum: 02.04.2005
Beiträge: 38

BeitragVerfasst am: 24. Aug 2005 08:44    Titel: Antworten mit Zitat

Zitat:
Oder sollen es umbedingt zwei Tabellen sein, die miteinander verknüpft werden?
Das ist wahrlich eine gute Frage. Bekomme ich dadurch nicht viel fast leere lange Datensätze?
Es können nämlich zu einem Auftrag viele verschiedene Leistungen zu verschiedenen Zeitpunkten sein.

Hätte noch eine Idee, ob deren Durchführung möglich ist?
Kann ich in einer Abfrage nachschauen, ob in der Leistungstabelle ein Eintrag dem Auftrag entsprechend (gleiche Firma, gleicher Mitarbeiter) und wenn nicht 0 eintragen? Wenn ja, wäre das eine Lösung und wie mache ich das?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
sommer87



Anmeldungsdatum: 14.02.2005
Beiträge: 36
Wohnort: Hessen (nähe FFM)

BeitragVerfasst am: 24. Aug 2005 11:24    Titel: Antworten mit Zitat

Hi,

was muss den überhaupt alles gespeichert werden?
Wofür soll die DB denn alles da sein?

Und wo willst du die Daten eingeben?
Über ein PHP-Script in MySQL?

Dann könntest du eine Tabelle abfragen und schauen, ob der gesuchte Begriff in der gesuchten Spalte steht:

Code:

SELECT
     COUNT(*) as Anzahl  //Kommentar: Befehl zum Zählen der Übereinstimmungen
FROM
      tabelle        //Kommentar: Tabelle, in der du suchen willst
WHERE
     firma = Müller       //Kommentar: Vergleich mit einem festen Wert

     AND             //Kommentar: Vergleichsoperatoren zum Verknüpfen sind möglich (AND / OR / ...)

     mitarbeiter = '".$_POST['Mitarbeiter']."'        //Kommentar: Vergleich mit einem (z.B. per $_POST übergebenen) Variablen


Anschließend könntest du dann die Anzahl der Ergebnisse abrufen und in einer if-Abfrage überprüfen, ob ein EIntrag besteht oder nicht:

Code:

  $row = mysql_fetch_assoc($result);

  if($row['Anzahl']) {
    \\Kommentar: irgendein Befehl, wenn ein Eintrag gefunden wurde.
  }
  else {
    //Kommentar: irgendein Befehl, wenn kein Eintrag gefunden wurde.
  }


Hoffe, du hast so etwas in der Art gemeint, ansonsten einfach wieder vergessen Augenzwinkern

_________________
mfg
sommer87
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
grybl



Anmeldungsdatum: 02.04.2005
Beiträge: 38

BeitragVerfasst am: 24. Aug 2005 12:46    Titel: Antworten mit Zitat

Erstmals danke Benny für deine Bemühungen.
Wie du das codiert hast, hätte schon meinen Vorstellungen entsprochen. Leider (und das habe ich vergessen gehabt zu erwähnen) muss das ganze in MS ACCESS ablaufen.

Das Einfügen in die Leistungstabelle hätte ich mit Insert to probiert, aber ich krieg immer eine Fehlermeldung.

Die Datenbank soll u.a. dafür da sein, um jederzeit anzuzeigen, wie viel der zu erbringenden Leistung (Stunden aus Auftrag) eines Mitarbeiters noch offen sind.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kurellajunior
Administrator


Anmeldungsdatum: 14.02.2005
Beiträge: 214
Wohnort: Berlin-Pankow

BeitragVerfasst am: 24. Aug 2005 18:20    Titel: Antworten mit Zitat

Genau hier und jetzt brauch ich meine Tabellen wieder !!! böse

[table][r][cl]Spalte[cl]Bedeutung[/r][r][cl]ID[cl]PK[/r][r][cl]Auftrag[cl]FK zur Auftragstabelle[/r][r][cl]Sollstunden[cl]Anzahl der Sollstunde[/r][r][cl]IstStunden[cl]Default: 0[/r][/table]

*Grummel* nicht lesbar
Code:
Spalte      | Bedeutung
------------+------------------------
ID          | PK
Auftrag     | FK zur Auftragstabelle
Sollstunden | Anzahl der Sollstunden
IstStunden  | Default: 0
So verständlich?
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
grybl



Anmeldungsdatum: 02.04.2005
Beiträge: 38

BeitragVerfasst am: 24. Aug 2005 19:36    Titel: Antworten mit Zitat

nicht böse sein traurig

die Tabelle versteh ich schon, aber nicht, wie sie mir weiterhelfen soll traurig

was mach ich dann, wenn als Leistung Stunden eingetragen werden???

ich kenn mich gar nicht mehr aus traurig

kann ich mit INSERT INTO Leistung(...,...,Stunden,...) Values (...,...,0,...) nix machen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kurellajunior
Administrator


Anmeldungsdatum: 14.02.2005
Beiträge: 214
Wohnort: Berlin-Pankow

BeitragVerfasst am: 24. Aug 2005 21:34    Titel: Antworten mit Zitat

Also wenn die Tabelle Leistung heißt:
Code:
INSERT INTO Leistung (ID, Auftrag, Sollstunden, Iststunden)
    VALUES (,15,30,);

Einen neuen Eintrag anlegen. Wenn die Tabelle mit
Code:
[...]Iststunden int(11) NOT NULL DEFAULT 0[...]
angelegt ist, wird automatisch ein korrekter Eintrag angelegt.
Die IstStunden-Eintragung erfolgt dann mit
Code:
UPDATE TABLE Leistung (Iststunden)
    VALUES (10)
    WHERE ID=_id_;


Jetzt alles klar?

keine Garantie für exakte Syntax, mein Arbeitsrechner ist nicht oben zum testen...
MySQL-Index

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> SQL und alles rund um Datenbanken Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen