Abfrage DB - Zeiten vergleichen - Logikproblem

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

  • #31
    test:
    Code:
    SELECT a.id, a.time, b.id, b.time,
    (a.time BETWEEN b.time AND b.time + INTERVAL 90 MINUTE) konflikt
    FROM vortrag a, vortrag b
    WHERE a.id != b.id
    was kommt da raus?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #32
      DAS:

      id time id time konflikt
      2 09:40:00 1 08:00:00 NULL
      3 12:00:00 1 08:00:00 NULL
      4 14:00:00 1 08:00:00 NULL
      5 12:40:00 1 08:00:00 NULL
      7 18:00:00 1 08:00:00 NULL
      8 09:00:00 1 08:00:00 NULL
      9 09:30:00 1 08:00:00 NULL
      1 08:00:00 2 09:40:00 0
      3 12:00:00 2 09:40:00 NULL
      4 14:00:00 2 09:40:00 NULL
      5 12:40:00 2 09:40:00 NULL
      7 18:00:00 2 09:40:00 NULL
      8 09:00:00 2 09:40:00 0
      9 09:30:00 2 09:40:00 0
      1 08:00:00 3 12:00:00 0
      2 09:40:00 3 12:00:00 0
      4 14:00:00 3 12:00:00 NULL
      5 12:40:00 3 12:00:00 NULL
      7 18:00:00 3 12:00:00 NULL
      8 09:00:00 3 12:00:00 0
      9 09:30:00 3 12:00:00 0
      1 08:00:00 4 14:00:00 0
      2 09:40:00 4 14:00:00 0
      3 12:00:00 4 14:00:00 0
      5 12:40:00 4 14:00:00 0
      7 18:00:00 4 14:00:00 NULL
      8 09:00:00 4 14:00:00 0
      9 09:30:00 4 14:00:00 0
      1 08:00:00 5 12:40:00 0
      2 09:40:00 5 12:40:00 0
      Manus manum lavat.

      Kommentar


      • #33
        hast du nur uhrzeiten da drinstehen oder auch ein datum dazu?

        schick mir mal ne mail mit nem dump der tabelle inklusive daten
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #34
          So, da isses
          Angehängte Dateien
          Manus manum lavat.

          Kommentar


          • #35
            warum fasst du die spalten date und time nicht zusammen?

            warum erzählst du was von 90 minuten, auch wenn's teilweise 2h sind?

            probier mal
            Code:
            SELECT 
              a.id id_a, CONCAT(a.date, ' ', a.time) start_a, a.length, 
              b.id id_b, CONCAT(b.date, ' ', b.time) start_b, b.length
            FROM 
              vortrag a
              INNER JOIN vortrag b 
                ON CONCAT(a.date, ' ', a.time) 
                   BETWEEN CONCAT(b.date, ' ', b.time) 
                   AND CONCAT(b.date, ' ', b.time) + INTERVAL b.length MINUTE
            WHERE 
              a.id != b.id
            wenn das geht, dann fass die beiden spalten zusammen, damit du dir das rumgekonkateniere sparen kannst und dann huldige mir
            Zuletzt geändert von mrhappiness; 03.02.2004, 20:23.
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #36
              Hallo Halbgott,
              das sieht ja wirklich gut aus ... nur, jetzt habe die drei DS, die überlappen, ich brauche aber auch die Datensätze, die nicht überlappen. Es sollen nur die, die überlappen, gekennzeichnet werden.

              Ich habe das jetzt über PHP geregelt, zu sehen unten:
              http://www.kirchel.de/congress/itinerary.php

              Wichtig sind die drei Anführungszeichen rechts

              Wenn es mit deiner Methode klappen sollte ist das aber sicherlich ein wenig eleganter als meine Methode
              Manus manum lavat.

              Kommentar


              • #37
                Code:
                SELECT 
                  a.id, CONCAT(a.date, ' ', a.time) start, a.length, 
                  SUM((CONCAT(a.date, ' ', a.time) 
                    BETWEEN CONCAT(b.date, ' ', b.time) 
                     AND CONCAT(b.date, ' ', b.time) + INTERVAL b.length MINUTE)) konflikt
                FROM 
                  vortrag a, vortrag b 
                WHERE 
                  a.id != b.id
                GROUP BY
                  a.id, start, a.length
                so?
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #38
                  Ja, Du GOTT ... muss ich ja zu geben ... das ist schon nicht schlecht ... hast jetzt aber auch alles geben müssen, oder

                  Kann ich auf dich noch mal zu kommen, wenn ich die produktive DB bekomme (werde aber es erstmal selber versuchen )

                  Hätte ich gar nicht gedacht, dass wir so weit kommen, so wie das mit diesem Thema angefangen hat

                  Aber mal ehrlich, denkst du wirklich, dass man soetwas herausbekommt, wenn man sich nicht tagtäglich damit beschäftigt ?

                  Gruß Olli
                  Manus manum lavat.

                  Kommentar


                  • #39
                    Original geschrieben von Churchill27
                    Ja, Du GOTT ... muss ich ja zu geben ... das ist schon nicht schlecht ... hast jetzt aber auch alles geben müssen, oder
                    jeder hat grenzen, der weg dahin is unterschiedlich weit; ich such meine noch *eg*
                    Kann ich auf dich noch mal zu kommen, wenn ich die produktive DB bekomme (werde aber es erstmal selber versuchen )
                    sicher doch, dazu is so ein forum ja da[quote]Hätte ich gar nicht gedacht, dass wir so weit kommen, so wie das mit diesem Thema angefangen hat [/quot€]du kennst den spruch mit den pferden und wer den größeren kopf hat?
                    ich tu nur immer so blöd, frag mal schmalle, der sagt dir, dass ich foll kluk bin
                    Aber mal ehrlich, denkst du wirklich, dass man soetwas herausbekommt, wenn man sich nicht tagtäglich damit beschäftigt ?
                    ehrliche antworten kosten extra
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #40
                      Hallo,
                      ich habe mir das noch mal geneu angeschaut ... da stimmt doch etwas nicht.
                      Ich bekomme das als Ergebnis:


                      id START length konflikt
                      1 2004-04-25 08:00:00 90 0
                      2 2004-04-25 09:40:00 90 0
                      3 2004-04-25 12:00:00 90 0
                      4 2004-04-25 14:00:00 90 1
                      5 2004-04-25 12:40:00 90 1
                      7 2004-04-25 18:00:00 120 0
                      8 2004-04-26 09:00:00 90 0
                      9 2004-04-26 09:30:00 90 1

                      Erstmal sortiert er nicht richtig fünf müßte ja vor vier kommen, oder ?
                      Und die letzte 1 bei 9 müßte bei acht stehen, oder ?
                      Manus manum lavat.

                      Kommentar


                      • #41
                        der sortiert nicht nicht richtig, der sortiert einfach gar nicht

                        ORDER BY CONCAT(das ganze mistzeugs) sollte helfen

                        meiner meinung nach solltest du bei den beiden seminaren, die in nem konflikt zueinander stehen einen wert > 0 haben

                        wollen wir das so machen, wie wir gestern angefangen haben?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #42
                          Sortieren habe ich hinbekommen, mußte nur ein "order by start" dazu.

                          Jetzt kommt soetwas raus:

                          id START length konflikt
                          1 2004-04-25 08:00:00 90 0
                          2 2004-04-25 09:40:00 90 0
                          3 2004-04-25 12:00:00 90 0
                          5 2004-04-25 12:40:00 90 1
                          4 2004-04-25 14:00:00 90 1
                          7 2004-04-25 18:00:00 120 0
                          8 2004-04-26 09:00:00 90 0
                          9 2004-04-26 09:30:00 90 1

                          Die einsen bei konflikt müßten alle eine Etage höher, das bekomme ich aber nicht hin
                          Manus manum lavat.

                          Kommentar


                          • #43
                            1 2004-04-25 08:00:00 90 0
                            2 2004-04-25 09:40:00 90 0
                            3 2004-04-25 12:00:00 90 1
                            5 2004-04-25 12:40:00 90 2
                            4 2004-04-25 14:00:00 90 1
                            7 2004-04-25 18:00:00 120 0
                            8 2004-04-26 09:00:00 90 1
                            9 2004-04-26 09:30:00 90 1

                            was hältst du davon?
                            eine terminüberschneidung betrifft ja immer zwei termine

                            0 = keine überschneidung
                            1 = überschneidung mit einem termin
                            2 = überschneidungm it 2 terminen
                            ...
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #44
                              wollen wir das so machen, wie wir gestern angefangen haben?
                              Können wir das ein wenig abkürzen, du weißt ja, muss um 23 Uhr wieder ins Bett

                              meiner meinung nach solltest du bei den beiden seminaren, die in nem konflikt zueinander stehen einen wert > 0 haben
                              Das heißt bei 8 und 3 auch noch eine 1 ?
                              Manus manum lavat.

                              Kommentar


                              • #45
                                ich meine so wie oben *g*

                                du musst in das SUM einfach nochmal das (CONCAT ... ) aber einfach a und b vertauschen
                                Ich denke, also bin ich. - Einige sind trotzdem...

                                Kommentar

                                Lädt...
                                X