kostenloser Webspace werbefrei: lima-city


Aktuellstes Datum selektieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    marius71

    marius71 hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. c****r

    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
  4. Autor dieses Themas

    marius71

    marius71 hat kostenlosen Webspace.

    danke, funktioniert für einen kunden gut.
    aber wie sieht es aus wenn ich diese abfrage für jeden kunden machen möchte?
    dann schließe ich mit limit 1 alle außer den ersten Kunden aus
  5. c****r

    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?
  6. Autor dieses Themas

    marius71

    marius71 hat kostenlosen Webspace.

    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.
  7. 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
  8. Autor dieses Themas

    marius71

    marius71 hat kostenlosen Webspace.

    danke, genau das habe ich gesucht ;-)
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!