Aktuellstes Datum selektieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktuellsten eintrag
ansatz
code
dank
datenbank
datum
eintrag
explizit sagen
http
kunde
kundennummer
kurzer einstieg
limit
maximum
neueinstieg
relation
stehen
tabelle
ticket
url
-
Hallo,
kurzer Einstieg in das Datenbankmodell bevor ich mit dem Problem anfange:
Ich habe eine Kunden Tabelle mit eindeutigen Kundennummern.
Jeder Kunde kann ein Ticket haben. Diese sind in der Tabelle Ticket gespeichert. Ein Ticket hat außerdem eine StatusID
Ein Ticket hat aber mehrere Historien Einträge. Diese sind in der Tabelle Tickethistorie gespeichert.
Hier das Modell
http://img52.imageshack.us/i/beispield.png/
Fügt jemand also beispielsweise einem Ticket eine neue Bemerkung hinzu, so wird ein Datensatz in der Tabelle Tickethistorie mit der Ticket ID gespeichert.
Nun möchte ich den aktuellsten Tickethistorien Eintrag aller Tickets, welche die StatusID 'GBC65-125' und die Kundennummer 654321 besitzen
Mein Ansatz hierzu ist folgender:
SELECT dbo.KundeZuAnbieter.KundeNummer, dbo.Ticket.StatusID, dbo.TicketHistorie.Datum FROM dbo.KundeZuAnbieter INNER JOIN dbo.Ticket ON dbo.KundeZuAnbieter.KundeZuAnbieterID = dbo.Ticket.KundeID INNER JOIN dbo.TicketHistorie ON dbo.Ticket.TicketID = dbo.TicketHistorie.TicketID WHERE (dbo.KundeZuAnbieter.KundeNummer = 654321) AND (dbo.Ticket.StatusID = 'GBC65-125')
Nun fehlt allerdings noch der Teil, das nur der aktuellste tickethistorien eintrag angezeigt wird
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hey,
Ist lange her und ich mache gerade erst wieder den Neueinstieg in SQL, deswegen ist das jetzt "ein Schuss ins Blaue"...
Dein Ansatz sieht gut aus. Für den aktuellsten Eintrag probier mal folgendes: Hänge deinem SQL-Statement noch
ORDER BY dbo.TicketHistorie.Datum DESC LIMIT 1
an. Hoffe, das geht!
Gruß,
Carsten -
Hey,
tut mir leid, das verstehe ich nicht :-) Du schränkst doch deine Anfrage explizit auf den Kunden mit Kundennummer 654321 ein - dann können durch
LIMIT 1
keine anderen Kunden "verschwinden".
Zudem, was ich gestern abend überlesen habe: Ist es richtig, dass du über
dbo.KundeZuAnbieter.KundeZuAnbieterID = dbo.Ticket.KundeID
joinst? Sollte da nicht KundeNummer stehen?
Könntest du nochmal explizit sagen, was genau du machen möchtest? Ich vermute gerade, du möchtest für alle Kunden zu allen deren Tickets (ist ja auch eine 1-n-Relation) den jeweils aktuellsten Tickethistorien-Eintrag selektieren? -
Könntest du nochmal explizit sagen, was genau du machen möchtest? Ich vermute gerade, du möchtest für alle Kunden zu allen deren Tickets (ist ja auch eine 1-n-Relation) den jeweils aktuellsten Tickethistorien-Eintrag selektieren?
genau, das ist der 2. schritt den ich angehen wollte, nachdem die selektion für einen einzelnen Kunden funktioniert
Zudem, was ich gestern abend überlesen habe: Ist es richtig, dass du über
dbo.KundeZuAnbieter.KundeZuAnbieterID = dbo.Ticket.KundeID
joinst? Sollte da nicht KundeNummer stehen?
nein, das ist schon richtig so, die kundenummer ist nicht datenbanken übergreifend eindeutig. Sprich: kundenummer 1111 kann in den jeweiligen Datenbanken öfters bei verschiedenen Kunden vorhanden sein. (jeder anbieter hat bei mir seine eigene Datenbank)
die kundeid ist allerdings eine kundezuanbieterid und damit auch datenbank übergreifend eindeutig. -
schau dir mal das an: mysql::MAX()
hoffe es hilft
lg
edit: ----
leider ist ausgeblieben. gemeint ist unix-time. da ist ein maximum drinnen für den letzten eintrag.
Beitrag zuletzt geändert: 25.3.2011 19:52:43 von hemiolos -
danke, genau das habe ich gesucht
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage