Problem mit einer MySql-Abfrage, die nicht die richtigen Informationen zurückgibt

  • Dies ist die Abfrage, die ich bereits habe:

     use willkara;
    
    select EngagementNumber,AgentID, EntertainerID, StartDate, EndDate, ContractPrice, ContractPrice/DateDiff(EndDate,StartDate) AS PricePerDay 
    FROM EA_Engagements 
    where StartDate <= '1999-8-13' 
      and EndDate   >= '1999-8-8'
    ORDER BY EngagementNumber;
     

    Und das ist das Problem:

    Ich brauche eine Liste von Engagements, die zwischen dem 08.08.1999 und dem 13.08.1999 aufgetreten sind. Ich möchte nur die Engagements sehen, die am oder nach dem 08.08.1999 begannen und am oder vor dem 13.8.1999 endeten. Für jedes dieser Engagements muss ich wissen, wie lang (in Tagen) das Engagement war und die IDs des Entertainers und des Agenten sowie der Vertragspreis pro Tag der Unterhaltung. Denken Sie daran, dass bei der Berechnung der Länge eines Engagements sowohl der Tag als auch der Tag, an dem es begonnen hat, einbezogen wird. Bitte sortieren Sie die Informationen in der Reihenfolge der Engagement-Nummer. [2 Zeilen]

    8 benötigte Spalten; Die letzte Spalte muss mit PricePerDay gekennzeichnet sein.

    Aus irgendeinem Grund sind einige der Enddaten 8-15 und 8-19 und es wird nur angenommen, dass es sich um die Daten handelt, die am 13. enden.

    22 November 2011
    willkara
1 answer
  • Da es sich um zwei Felder handelt, ist es theoretisch möglich, dass ein Startdatum eingegeben wird, das älter als das Enddatum ist, und umgekehrt, was zu falschen Ergebnissen führt. Ich würde Ihre Anfrage entsprechend anpassen, ein Dazwischen oder ähnliches machen.

    22 November 2011
    Micharch54