Koordinatensystem

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

  • Koordinatensystem

    Hallo
    Ich habe eine Tabelle mit einem Koordinatensystem und möchte daraus umliegende Werte von einem bestimmtem Punkt auslesen, zb x = 5 und y = 16:
    Code:
    SELECT id, x, y
    FROM koord
    WHERE (x <= 5+2 OR x >= 5-2) AND (y >= 16-2 OR y <= 16+2)
    ORDER BY y, x
    Jetzt erwarte ich eigentlich 25 Felder, bekomme aber 400, was der Inhalt der ganzen Tabelle ist
    Wo liegt mein Fehler?

  • #2
    x <= 5+2 OR x >= 5-2

    trifft zu auf alle x die entweder kleiner/gleich 7 sind, also 1 bis 7, oder größer/gleich 3, also 3 bis 20 ... trifft somit auf alle zahlen zwischen 1 und 20 zu.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Stimmt... Aber wie kann ich denn sagen, dass x zwischen 3 und 7 liegen soll?

      Kommentar


      • #4
        Original geschrieben von Realmaker
        Stimmt... Aber wie kann ich denn sagen, dass x zwischen 3 und 7 liegen soll?
        indem du kein OdeR verwendest sondern .... !
        Kissolino.com

        Kommentar


        • #5
          ich komm nicht drauf

          Kommentar


          • #6
            Ich hab es gerade so versucht, nur bekomm ich dann gar keine Datensätze.
            Code:
            WHERE ((x <= 5 +2 && ! x >5) OR (x >=5 -2 && ! x <5)) AND ((y >=16 -2 && ! y <16) OR (y <=16 +2 && ! y >16))

            Kommentar


            • #7
              hast du überhaupt ansatzweise einen schimmer, was deine "logischen" (das wort ist ja wohl eher ein witz in dem zusammenhang) bedingungen bedeuten ...?

              (x <= 5 +2 && ! x >5)
              x <= 7 und x nicht > 5 ergibt x <= 5

              (x >=5 -2 && ! x <5)
              x >= 3 und x nicht < 5 ergibt x >= 5

              (y >=16 -2 && ! y <16)
              ergibt y >= 16

              (y <=16 +2 && ! y >16)
              ergibt y <= 16



              beschäftige dich erst mal ein wenig mit den grundlagen der aussagenlogik, und höre so lange auf, absolut sinnfreies zeug zusammenzustümpern.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Oh stimmt..
                Ich hab es jetzt so gemacht:
                Code:
                WHERE ((x <= 5 +2 && ! x <5) OR (x >=5 -2 && ! x >5)) AND ((y >=16 -2 && ! y >16) OR (y <=16 +2 && ! y <16))
                (x <= 7 && ! x <5)
                x muss 7 oder kleiner sein, darf aber nicht kleiner als 5 sein

                (x >=3 && ! x >5)
                x muss 3 oder größer sein, darf aber nicht größer als 5 sein

                (y >=14 && ! y >16)
                y muss 14 oder größer sein, darf aber nicht größer als 16 sein

                (y <= 18 && ! y <16)
                y muss 18 oder kleiner sein, darf aber nicht kleiner als 16 sein

                Wenn ich jetzt nichts übersehen habe, frage ich mich, warum ich Datensätze mit x = 1 rausbekomme.

                Kommentar


                • #9
                  Code:
                  WHERE x <= 5+2 AND x >= 5-2 AND y >= 16-2 AND y <= 16+2
                  So geht es

                  Kommentar


                  • #10
                    evtl. lässt sich die query mit BETWEEN auch gut lösen.

                    Kommentar

                    Lädt...
                    X