PHP / SQL Liste mit nicht vorhandenen Werten erstellen

Sinac

Erfahrenes Mitglied
Hi @all!

Vielleicht bin ich ja bissle doof aber kann mich jetzt irgendwie nicht reindenken wie ich folgendes sinnvoll lösen könnte:

Ich habe eine SQL Tabelle mit IP Adressen und möchte eine Abfrage machen welche Werte in dieser Liste NICHT vorhanden sind. Jemand ne Idee oder nen Tip? :)

Greetz...
Sinac
 
Du könntest mit RegExp arbeiten.

Fall1: du hast ein paar IP-Adressen, sagen wir 3, und willst alle IP-Adressen aus der DB haben, die nicht mit einer der 3 Adressen übereinstimmen:
Code:
SELECT IP from tabelle where IP NOT REGEXP "^(127\.0\.0\.1|127\.0\.0\.2|127\.0\.0\.3)$"

Fall 2: du hast ein paar IP-Adressen, sagen wir 3, und willst alle IP-Adressen von diesen 3 haben, die nicht in der DB vorkommen:
Dann könntest du alle IP-Adressen aus der DB holen, daraus einen RegExp erstellen, und gegen jede einzelne der 3 IP's prüfen.


Ich hoffe mal, dass ich dich halbwegs recht verstanden habe... und du da nicht 1000 IP-Adressen in der DB hast und dir die restlichen 4 Milliarden anzeigen lassen willst:-)
 
Verdammt, von RegExp hab ich noch weniger Ahnung =)
Ich habe halt 3 Einträge und will alle anderen haben aus einem bestimmten Range, die stehen aber noch nicht drinne.
Aber ich überleg mir mal was.
 
versuch es doch mal so.

erstell eine tabelle m it allen IPs . Sollte ja nicht all zu viele sein wenn du nur in einem Range suchst :)

generiere den SQL-String dynamisch indem du die IP-Adressen aus der DB ausliest (hier rot dargestellt.

string = "SELECT ip FROM range WHERE (ip<> '11.222.111.222') OR (ip<> "222.111.111.222") OR usw"

oder versuche mal:

SELECT ip_range FROM range WHERE NOT EXISTS (SELECT ip FROM vorhandeneips)

MfG

PS: eventuell poste mal den Bereich der untersucht werden soll.

MfG
 
eine möglichkeit wäre auch (für unerfahrene) einfach mit "select * from tabelle" alle ip's in ein array zu schreiben und dann bei der ausgabe mit hilfe eines PHP-Scripts aus zu werten.
 
Ja, eure beiden Möglichkeiten sind mir auch schon in den Sinn gekommen. Da es aber ah nur jeweils ein C Subnet ist hab ich einfach in PHP ne Schleife gemacht die jeweils eine Abfrage macht und dann auswertet ob ein Datensatz zurückgegeben wird oder nicht. Ist sicherlich keine perfomante Lösung aber reicht für meine Ansprüche.

THX!
 
Zurück