Abfrage zwischen zwei Spalten soll Ergebnis liefern

Masterpurzel

Mitglied
Hallo,

ich sitze schon seit gestern an einer Abfrage. Komme nur leider nicht richtig auf die Syntax.

Folgendes habe ich vor:

Tabelle: ips
---------------------
|start|end|code|
---------------------

nun möchte ich eine Abfrage ausführen die z.B. folgendes ergibt:

IP: 127.0.0.1 -> wird zu 127001

Gesucht werden soll in start und end, wenn es zwischen start und end auftaucht, soll der Code geliefert werden. Leider klappt das bei mir nicht so recht, da er immer den gleichen Code ausgibt, obwohl bei manueller suche ein anderer Code rauskommt.

Abfrage:

Code:
SELECT start, end, code FROM ips WHERE start >= $ip OR end <= $ip

Wer kann mir helfen und sagen wo mein Denkfehler liegt?

LG Masterpurzel
 
Was hat das: IP: 127.0.0.1 -> wird zu 127001
mit deinem SQL zu tun?

Zeig mal dein generiertes SQL
 
was genau steht den in den Feldern start und end drin?

meinst du sowas in der art?
Code:
SELECT start,end,code FROM ips where replace($ip,".","")>=replace(start,".","") and replace($ip,".","")<=replace(end,".","")
 
Also ich hab es mit meinem select getestet..da bekomm ich dann immer den passenden Code..

Oder was genau meinst du mit "richtige Werte" ?
 
Uh--- IP-Adressen vergleichen ist nicht ganz einfach. Du musst sie irgendwei in das Formt 000.000.000.000 bringen um zu vergleichen. Nur den Punkt entfernen reicht da nirgens hin
Es gibt eine Zahlendefinition einer IP-Adresse mit der man arbeiten kann. Diese kriegt man mit INIT_ATON(). Damit kannst du nachher einen einfachen BETWEEN durchführen
SQL:
SELECT
	code
FROM
	ips
WHERE
	INET_ATON('127.0.0.13') BETWEEN INET_ATON(`start`) AND INET_ATON(`end`)
 
Zuletzt bearbeitet von einem Moderator:
Danke Yaslaw für den Tipp! Ich werde ihn testen, sobald ich dafür Zeit habe (wird warscheinlich später Nachmittag sein!).

Ich melde mich wenns Probleme gibt.
 

Neue Beiträge

Zurück