Vorzeichen in einer Abfrage, für das man erst die Datenbank lesen muss

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

  • Vorzeichen in einer Abfrage, für das man erst die Datenbank lesen muss

    Hi,

    hab da ein Problem mit der Gestaltung einer Abfrage.

    In meiner Datenbank stehen Grenzwerte.
    Ist im jeweiligen Datensatz start_wert < end_wert (beiden Variablen werden über das Skript Spaltennamen aus meiner Datenbank zugewiesen), will ich folgende Abfrage durchführen:

    $sql_string = $sql_string . " AND ((" . $planet . ">=" . $start_wert . ") AND (" . $planet . "< " . $end_wert . "))";

    ansonsten folgende:

    $sql_string = $sql_string . " AND ((" . $planet . ">=" . $start_wert . ") AND (" . $planet . "< " . $end_wert . "[COLOR=tomato]+ 360[/COLOR] ))";

    Welcher Wert nun der größere ist, lässt sich allerdings nur durch eine Datenbankabfrage herauskriegen. Wie löst man das am besten? Lässt sich der Vorzeichen-Vergleich irgendwie durch eine Unterabfrage einbauen (wäre schön, gibts da ein Beispiel für so eine Vorzeichen-Angelegenheit?) oder muss man tatsächlich die Datenbank zweimal lesen?

    Ciao!
    Gruselgockel

  • #2
    PHP-Code:
    mysql_query($sql_string) or die ( mysql_error() . nl2br($sql_string)); 
    ergibt ?

    Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
    sondern mit den Augen das Manual zu lesen.

    Kommentar


    • #3
      Das ergibt eine bisher syntaktisch erfolgreiche Abfrage, leider ist aber die Vorzeichengeschichte noch nicht drin.

      Der String schaut dann z.B. so aus, falls Du das meinst:


      SELECT ID, name, vorname, geschlecht, datum, uhrzeit, ort, breite, laenge, laenderkennung FROM DAV WHERE (vollstaendig_fuer_berechnung <= 1) AND ((sun>=grenze12) AND (sun<grenze1))


      Ciao!
      Gruselgockel

      Kommentar


      • #4
        Schau dir mal den Befehl IF() an und ggf. die Klausel HAVING. Between könnte auch ein Helferlein sein

        Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
        sondern mit den Augen das Manual zu lesen.

        Kommentar


        • #5
          Hi,

          Prinzipiell wohl schon ein ziemlich guter Ansatz
          - Leider hauts noch nicht so richtig hin.

          Hier mal meine zuletzt zusammengebaute Abfrage:

          SELECT ID, name, vorname, geschlecht, datum, uhrzeit, ort, breite, laenge, laenderkennung , IF (grenze12>=grenze1, 360, 0) AS kon FROM DAV WHERE (vollstaendig_fuer_berechnung = 1) AND ((sun>=grenze12) AND (sun<grenze1+kon));

          Darauf die Fehlermeldung:

          Unknown column 'kon' in 'where clause'

          Wie muss ich das umschreiben, damit diese Konstante "kon", die ich im IF-Statement festlege, einfach zum Wert der Spalte grenze1 addiert wird?

          MfG
          Gruselgockel

          Kommentar


          • #6
            entweder verwendest du das IF erneut im WHERE oder du verwendest HAVING.
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              PHP-Code:
              SELECT IDnamevornamegeschlechtdatum
              uhrzeitortbreitelaengelaenderkennung  
              FROM DAV WHERE 
              (vollstaendig_fuer_berechnung 1) AND
               ((
              sun>=grenze12) AND (sun<grenze1+(IF (grenze12>=grenze13600)))); 
              chansel0049
              ----------------------------------------------------
              if you've reached the bottomline - dig further!
              Übersetzer gesucht? http://www.babelport.com

              Kommentar


              • #8
                Hi,

                so ähnlich hatte ich es bis gestern auch drin, bis ich gemerkt hab, dass sich der Term noch anders vereinfachen lässt. Auf jeden Fall habe ich wieder was dazugelernt, danke Euch!

                Ciao!
                Gruselgockel

                Kommentar

                Lädt...
                X