AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL-Abfrage über mehrere Tabellen

SQL-Abfrage über mehrere Tabellen

Ein Thema von buyden · begonnen am 30. Jun 2006 · letzter Beitrag vom 11. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#1

SQL-Abfrage über mehrere Tabellen

  Alt 30. Jun 2006, 10:38
Datenbank: MySQL • Version: 4.1 • Zugriff über: ZEOS
hi,

folgende Situation:
Ich hab ne Datenbankanwendung für Reparaturaufträge. Tabelle "auftrag" beinhaltet sämtliche Daten zu einer Reparatur, "statistik" beinhaltet auftragsnummer, statuscode, techniker und datum der letzten Bearbeitung. in der Statistiktabelle wird bei jeder Statusänderung im Auftrag ein Eintrag erstellt oder wenn zu dem jeweiligen Auftrag an aktuellen Tag schon eine Statusänderung vorgenommen wurde, wird dieser Aktualisiert.
Wenn jetzt ein Kunde einen Kostenvoranschlag erhält, muss er innerhalb von 2 Wochen darauf reagieren, tut er das nicht, bekommt er eine Erinnerung für die er 7 Tage Frist hat. Erfolgt keine Reaktion wird das Gerät unrepariert verschickt. Soviel dazu.

Ich möchte jetzt eine Erinnerungsfunktion einbauen, damit der Techniker beim Programmstart sieht, bei welchen Aufträgen die Frist überschritten ist. Es soll also angezeigt werden, Auftragsnummer, Status, Datum der letzten Statusänderung, Anforderung (tabelle Auftrag) und seit wieviel Tagen die Letzte Änderung vergangen ist.

Mein Problem ist zum einen, wie ich die Daten aus den verschiedenen Tabellen zusammenfasse und zum anderen, dass ich keine Idee hab, wie ich die unterschiedlichen Fristen (14 und 7 Tage) zu den unterschiedlichen Statuscodes zusammen in einem DBGrid anzeigen kann.

Welcher Statuscode welche Frist hat hab ich in einer INI-Datei stehen.

Hat jemand ne Idee?
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL-Abfrage über mehrere Tabellen

  Alt 30. Jun 2006, 11:06
Poste mal die Metadaten (Tabellendeklarationen).
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: SQL-Abfrage über mehrere Tabellen

  Alt 30. Jun 2006, 11:18
wie meinen?!
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#4

Re: SQL-Abfrage über mehrere Tabellen

  Alt 30. Jun 2006, 11:28
Er meint den Aufbau der Tabellen (Feldname, Feldtypen, ...)
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: SQL-Abfrage über mehrere Tabellen

  Alt 30. Jun 2006, 11:58
ach so

siehe screenshots.
Miniaturansicht angehängter Grafiken
tbstatistik_473.jpg   tbauftrag_156.jpg  
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: SQL-Abfrage über mehrere Tabellen

  Alt 1. Jul 2006, 01:09
Kannst du uns vielleicht noch verraten, über welche Spalten eine Verbindung zwischen den Tabellen hergestellt werden kann. Kann man irgendwie die AuftragID mit der Statisik-Tabelle verbinden. Was ist auftrag in der Statistik-Tabelle?
Und warum wird der Statuscode in einer INI-Datei gehalten? Du hast doch eine Datenbank, dann erstellt doch auch dafür eine Tabelle.

Gruss
Thorsten
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: SQL-Abfrage über mehrere Tabellen

  Alt 1. Jul 2006, 07:50
Hallo buyden.

Könntest du die DDL-Skripte der Tabellen posten, in der grfaik ist nur ersichtlich das es einen Fremdschlüssel gibt aber nicht welches feld es ist und auf welchen Primärschlüssel er verweist.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: SQL-Abfrage über mehrere Tabellen

  Alt 5. Jul 2006, 06:02
Sorry, dass das so lang gedauert hat, ich lag ein paar Tage flach.

@omata
ich hab ne Tabelle für die Statuscodes aber bisher die Erinnerungsfristen nicht mit drin, weil das ne neue Funktion wird aber du hast recht, praktischer wären die sicher als neue Spalte in der Staustabelle. Werd ich ändern.

@mkinzler
statistik.auftrag hat nen Fremdschlüssel zu auftrag.nummer, was wenn ich mir das grad überleg ziemlich sinnlos ist weil auftrag.nummer kein Primärschlüssel ist, zwar auch eindeutig aber eben kein key.

Ich glaub ich muss meine DB mal noch ein bisschen umbauen.

Gehen wir also davon aus dass statistik.auftrag der Fremdschlüssel zu auftrag.auftragid ist und somit ne n:1-Beziehnung besteht.
Ansonsten ist die Statistik-Tabelle nicht verknüpft.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: SQL-Abfrage über mehrere Tabellen

  Alt 5. Jul 2006, 07:08
Ein
SQL-Code:
Select s.techniker, max(datum), a.statuscode /* usw */
from statistik s join auftrag a on s.auftrag=a.auftragid
group by s.techniker, a.statuscode /* usw, allo in group rein welche keine max Funktion ist */
where s.techniker = 'Hans Müllerand max(datum) <= date
Damit solltest Du schon mal alle Einträge kriegen, wo der letzte Störfall heute ist.

Willst Du einen Zeitbereich von 14 Tagen berücksichtigen, so kuck Dir mal dazu die Datumsfunktionen von MySQL an, da gibts dann einige.
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: SQL-Abfrage über mehrere Tabellen

  Alt 5. Jul 2006, 07:33
ich glaub das ist nicht ganz das was ich meine. ich denk das hauptproblem sind die unterschiedlichen Erinnerungsfristen je statuscode wobei nicht jeder Statuscode erinnert werden soll (Erinnerung=0).

nach dem Hinweis von Omata würden die Erinnerungsfristen ja mit in der Statustabelle stehen:

Status (Integer)*
bezeichnung (Varchar)
Erinnerung (Integer)

auftrag.status ist dementsprechend FK auf status.status.

Also wäre es notwendig, innerhalb der Abfrage außerdem noch die letzten Statistikeinträge nach Status zu überprüfen und wenn für den entstprechenden Status ne Erinnerungsfrist > 0 ist dann müssen die zu dem Statistikeintrag gehörenden Daten aus der Auftragstabelle in der Ergebnismenge auftauchen.

Ich denk das wird äußerst komplex falls das überhaupt machbar ist
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz