Abfrageschwierigkeiten ...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrageschwierigkeiten ...

    Guten Abend liebe Community,

    ich bin dabei, ein System zu schreiben, was Einsätze auf Leute verteilt. Hierbei sind drei Faktoren zu berücksichtigen: Das Alter, Die Priorität sowie die eventuell vereinbarte Reaktionszeit.

    Die Tabellenstruktur:

    incident
    - incidentID INTEGER
    - incidentCreated INTEGER (UNIX-Timestamp)
    - incidentPriority ENUM (1,2,3)
    - incidentContract INTEGER

    contract
    - contractID INTEGER
    - contractReaction INTEGER (in Stunden)

    Ich weiß leider nicht, wie ich die Abfrage anders gestalten kann als so:

    SELECT incidentID
    FROM incident
    LEFT JOIN contract c ON (c.contractID = incidentContract)
    ORDER BY incidentCreated, contractReaction, incidentPriority

    Vielen Dank schon jetzt.

    Viele Grüße
    Someday aka Henning

  • #2
    Re: Abfrageschwierigkeiten ...

    Und was ist das Problem mit der Abfrage? Sieht doch okay aus...

    EXPLAIN
    hilft, wenn Indizes fehlen~

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Guten Abend Ghostgambler,

      das Problem ist, in welcher Reihenfolge er sortieren muss.
      Ähm, ... oh, ich merk, dass das irgendwie doch soweit hinkommt.
      Aber es ist doch richtig, dass die Suche nur die 2. und 3. Suchfelder bearbeitet, wenn 2 mal das gleiche erste Feld da ist, oder?

      VG
      Henning

      Kommentar


      • #4
        Original geschrieben von Someday
        Aber es ist doch richtig, dass die Suche nur die 2. und 3. Suchfelder bearbeitet, wenn 2 mal das gleiche erste Feld da ist, oder?
        Ja, intern in mysql dürfte das so implementiert sein.

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Hallo Ghostgambler,

          okay, dann stehe ich vor einem gewissen Punkt... Wie kriege ich dann genau die Abfrage so hin, dass der Datensatz mit der ältesten Erstellung, der niedrigsten Reaktionszeit sowie mit der niedrigsten Priorität (3 = niedrig, 1 = hoch) erhalte?

          Kann mir einer auf die Sprünge helfen?

          Viele Grüße
          Henning

          Kommentar


          • #6
            SORT BY ... ASC|DESC
            Manual weiß mehr...

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Hallo Ghostgambler,

              nach Suche auf http://dev.mysql.com/ finde ich leider nichts zu dem Thema :-(

              Viele Grüße
              Henning

              Kommentar


              • #8
                http://dev.mysql.com/doc/refman/5.1/en/select.html

                Kommentar


                • #9
                  Heißt natürlich auch ORDER BY
                  http://dev.mysql.com/doc/refman/5.1/de/select.html

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Ahh....

                    Ah, okay,

                    dann hab ich es gefunden ;o)

                    Sehe ich es richtig, dass das Statement so aussehen kann:

                    SELECT ... FROM .... WHERE ... ORDER BY a ASC, b DESC ??

                    Aber das Problem besteht immer noch, dass dann nciht alle drei (im Beispiel nur 2) Spalten berücksichtigt werden?!

                    Viele Grüße
                    Henning

                    Kommentar


                    • #11
                      Re: Ahh....

                      Original geschrieben von Someday
                      Sehe ich es richtig, dass das Statement so aussehen kann:

                      SELECT ... FROM .... WHERE ... ORDER BY a ASC, b DESC ??
                      Ja

                      Aber das Problem besteht immer noch, dass dann nciht alle drei (im Beispiel nur 2) Spalten berücksichtigt werden?!
                      Ne, die werden nur angegeben, damit der Query länger wird, benutzt werden sie natürlich nicht.

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        Re: Re: Ahh....

                        Original geschrieben von ghostgambler
                        Ja


                        Ne, die werden nur angegeben, damit der Query länger wird, benutzt werden sie natürlich nicht.
                        Ist das jetzt ernst gemeint oder nicht?!? Ich habe diese Information, dass erst der 2. ORDER-Schlüssel genutzt wird, wenn 2 gleiche beim ersten ORDER-Schlüssel vorhanden sind.

                        Viele Grüße
                        Henning

                        Kommentar


                        • #13
                          Ja, und? Alles andere macht doch auch keinen Sinn. Was soll denn Deiner Meinung nach passieren, wenn der Datensatz mit der ältesten Erstellung nicht die niedrigste Reaktionszeit oder Priorität hat?

                          Kommentar


                          • #14
                            Das war purer Sarkasmus...

                            Vielleicht solltest du dein "Problem" mal mit Beispiel-Dump, Query und erwünschter Lösung verdeutlichen, anstatt hier mit irgendwelchen Begriffen und Wünschen um dich zu werfen, die niemand versteht~

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #15
                              OK, also


                              Meine derzeitige Query:

                              PHP-Code:
                              SELECT `technicianIncidentID`, `technicianIncidentCreated`, `technicianIncidentPriority`, `contractReaction`
                              FROM `technicianIncident`
                              LEFT JOIN `contractc ON c.contractID technicianIncidentContract )
                              WHERE `technicianIncidentStatus` = '0'
                              ORDER BY `technicianIncidentCreatedASC, `technicianIncidentPriorityASC, `contractReactionASC 
                              Meine derzeitigen Daten:

                              incidentID | incidentCreated | incidentPriority | contractReaction
                              4 | 1184870219 | 2 | NULL
                              5 | 1184870321 | 2 | 1
                              6 | 1184870346 | 3 | NULL
                              7 | 1184870495 | 2 | 1

                              Das Ergebnis sollte sein:

                              incidentID | incidentCreated | incidentPriority | contractReaction
                              5 | 1184870321 | 2 | 1
                              7 | 1184870495 | 2 | 1
                              6 | 1184870346 | 3 | NULL
                              4 | 1184870219 | 2 | NULL

                              Das Ziel ist, dass ich immer den ältesten Datensatz mit der geringsten Reaktionszeit und der höchsten Priorität zuerst bearbeiten möchte.

                              Viele Grüße
                              Henning

                              Kommentar

                              Lädt...
                              X