select etwas zwischen zwei daten

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

  • select etwas zwischen zwei daten

    hallihallo,

    hab zwar schon gesucht aber nichts gefunden oder einfach beim suche falsch ausgedrückt.
    und zwar..
    hab ich in einen script ein formular mit drei feldern:
    1. ort
    2. am / von (starttermin)
    3. bis (endtermin)

    wird nur 1. eingegeben, werden alle termine des ortes ausgegeben.
    wird 1. + 2. eingegeben, werden alle termine des ortes an bestimmten tag ausgegeben.
    so weit funzt's, ja auch kein problem!!(also noch keine arbeit für euch)

    und jetzt:
    wird 1. + 2. +3. eingegeben sollen alle termin angezeigt werden:
    I. die von diesen ort sind
    II. die innerhalb dieses zeitraums beginnen

    wie lautet meine select-anfrage?
    hab kene ahnung!!

    besten dank für eure hilfe!

  • #2
    hi

    geht nicht einfach

    select * from tabelle where
    ort = '$ort'
    AND
    termin >= $am
    AND
    termin <= $bis


    gruesse von

    pau

    Kommentar


    • #3
      gut, irgendwie so hab ich mir das ja auch gedacht,
      aber was ist termin bei dir?
      es wird doch nur ein starttermin und eine endtermin eingegeben!

      Kommentar


      • #4
        Original geschrieben von pauino
        geht nicht einfach

        select * from tabelle where
        ort = '$ort'
        AND
        termin >= $am
        AND
        termin <= $bis
        sollte theoretisch funktionieren. (evtl. noch $am und $bis in hochkommas setzen, wenn es sich nicht um reine zahlenwerte handeln sollte.)

        wenn kein wert für $bis eingeben wurde, kannst du ja per script $bis = $am setzen.

        die andere möglichkeit wäre, deine query in abhängigkeit von den eingaben zu machen, also wenn nur $am eingegeben wurde, machst du so eine query
        select * from tabelle where ort = '$ort' AND termin = $am
        und wenn am und bis eingeben wurde, dann halt wie oben.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          hi

          @whoda
          mit termin meinte ich eigentlich das feld der datenbank.
          poste doch mal deine zweite abfrage. die die schon geht!



          @wahsaga

          du hast natuerlich recht!



          gruesse von

          pau

          Kommentar


          • #6
            hier meine funzente abfrage:

            PHP-Code:
            $sql "SELECT * FROM orte, veranstaltungstermine WHERE orte.ortid = veranstaltungstermine.ort AND ortid='$ort' AND starttermin='$starttermin'"
            bin ich jetzt bescheuert oder wieso raff ich das jetzt nicht ?

            Kommentar


            • #7
              keiner ist hier bescheuert!

              Code:
              $sql = "SELECT * FROM orte, veranstaltungstermine 
                          WHERE 
                                  orte.ortid = veranstaltungstermine.ort 
                          AND ortid='$ort' 
                          AND starttermin >='$starttermin'
                          AND starttermin <= '$endtermin' ";
              das geht allerdings nur, wenn starttermin auch vom datentyp date ist

              gruesse von

              pau

              Kommentar


              • #8
                auf die idee mit den starttermin mit sich selber zu vergleich bin ich natürlich nicht gekommen. manchmal will man es sich absichtlich irgendwie schwerer machen als es sein muss.

                aber es scheint zu funzten!!!!!!!!!!! spitze!!!

                besten dank pauino und wahsaga für eure hilfe.

                ciao whoda

                ps. vielleicht man ich aus diesen gelösten problem schon bald wieder ein neues, es fällt einen ja auch immer etwas neues ein. ich hoffe ihr steht mir dann auch wieder zur seite.

                Kommentar


                • #9
                  noch schöner gehts mit BETWEEN
                  PHP-Code:
                  $sql "SELECT * FROM orte, veranstaltungstermine 
                              WHERE 
                                      orte.ortid = veranstaltungstermine.ort 
                              AND ortid='
                  $ort
                              AND starttermin BETWEEN '"
                  .$starttermin."' AND '".$endtermin."'"
                  und das FROM orte, veranstaltungstermine kann man auch mit einem JOIN besser kombinieren. da ich jetzt allerdings nicht den genauen zusammenhang beider tabellen kenne, lasse ich es ...

                  bzw. hier dennoch ein vorschlag.
                  PHP-Code:
                  $sql "SELECT   * FROM veranstaltungstermine VT
                                       LEFT OUTER JOIN orte O ON O.ortid = VT.ort
                          WHERE    O.ortid='
                  $ort' AND
                                   VT.starttermin BETWEEN '"
                  .$starttermin."' AND '".$endtermin."'"
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    sowas wie mit between hab ich gesucht, so was kann ich mir immer leichter vorstellen.

                    aber.......

                    zur entschuldigung der anderen muss ich sagen, dass ich vergessen habe, dass ich etwas vergessen habe.

                    das eingegebene zweite datum, also der endtermin, muss auch die termine berücksichtigen, die schon begonnen haben, aber innerhalb dieses zeitraums enden.

                    man muss sich das so vorstellen, auswertige freunde gehen dann auf meine HP und schauen nach, was los ist in unseren kaff, in den zeitraum, indem sie mich mal besuchen.

                    Kommentar


                    • #11
                      muss ich dazu nich wisen, wie lang ein termin geht?
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        Original geschrieben von whoda
                        das eingegebene zweite datum, also der endtermin, muss auch die termine berücksichtigen, die schon begonnen haben, aber innerhalb dieses zeitraums enden.
                        dann müsstest du ja in deiner tabelle noch irgendein feld haben, welches dir analog zur spalte starttermin auch anzeigt wann eine veranstaltung endet?

                        also so ein art spalte endtermin.



                        dann kannst du deine where-bedingung ja folgendermassen erweitern:
                        PHP-Code:
                        AND starttermin BETWEEN '$starttermin' AND '$endtermin' OR endtermin BETWEEN '$starttermin' AND '$endtermin' 
                        damit solltest du dann sowohl die sachen finden, die im zeitraum anfangen, als auch die die darin aufhören.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          sorry kam irgendwie doppelt,

                          @wahsaga

                          so hab ich mir das auch schon gedacht und gemacht, nur das komische ist,
                          als ausgabe erhalte ich jetzt vielleicht ca. 300 veranstaltungen, obwohl ich doch nur 14 eingetragen hab.

                          PHP-Code:
                                      SELECT FROM orteveranstaltungstermine 
                                      WHERE 
                                      orte
                          .ortid veranstaltungstermine.ort 
                                      
                          AND ortid='$ort' 
                                      
                          AND starttermin BETWEEN '$starttermin' AND '$endtermin' 
                                      
                          OR endtermin BETWEEN '$starttermin' AND '$endtermin' 
                          Zuletzt geändert von whoda; 07.03.2003, 16:17.

                          Kommentar


                          • #14
                            moin,

                            soweit so gut, es klappt.
                            meine sql-abfrage lautet:
                            PHP-Code:
                                $sql "SELECT Distinct * FROM orte, veranstaltungstermine 
                                        WHERE 
                                        orte.ortid = veranstaltungstermine.ort 
                                        AND ortid='
                            $ort
                                        AND starttermin <= '
                            $startt' AND endtermin >= '$endt
                                        OR starttermin <= '
                            $startt' AND endtermin >= '$startt
                                        OR starttermin >= '
                            $startt' AND starttermin <= '$endt'
                                        "

                            es werden mir die richtigen datensätzte ausgegeben, aber jeder 38x und ich weiss nicht warum? ich hab in meiner db gerademal noch 7 datensätze, wobei 5 ausgegeben werden sollen, die also korrekt sind, ergibt mir aber insg. 190 aus.
                            wie kann ich das unterbinden und woran liegt das?

                            muss ich in der sql-abfrage auch noch klammern setzten oder kann ich überhaupt klammern setzten?

                            Kommentar


                            • #15
                              mach mal so.
                              PHP-Code:
                              $sql "SELECT   * FROM veranstaltungstermine VT
                                                   LEFT OUTER JOIN orte O ON O.ortid = VT.ort
                                      WHERE    O.ortid='
                              $ort' AND
                                               ( VT.starttermin <= '"
                              .$startt."' AND VT.endtermin >= '".$endt."' OR
                                                 VT.starttermin <= '"
                              .$startt."' AND VT.endtermin >= '".$startt."' OR 
                                                 VT.starttermin >= '"
                              .$startt."' AND VT.starttermin <= '".$endt."' )"
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X