Kann man dieses Query auch ohne "like" realisieren?

port29

deus.Server
Hallo,

ich habe gerade ein kleines Problem mit einem SQL Query. Der SQL Zugriff findet mit einer Software statt, ich kann nur den Query verändern und dabei die Variablen der Software nutzen. Ziel meines Vorhabens ist es, den Zugriff nur von bestimmten Rechnern für bestimmte Nutzer zu realisieren.

Was funktionieren wird:
Ich erweitere die Tabelle um ein Varchar oder Text feld und trage die Namen der Rechner in die Spalte ein. Dann erweitere ich das Query folgendermaßen:
Code:
SELECT * FROM users ..... WHERE ... AND hostname like '%--hostname--%'

Ich weiß jetzt aber nicht, ob das so eine optimale Lösung ist. Habt ihr andere Ideen?
 
1) MySQL? Oracle? MS SQL?
2) Hast du den Hostname in den Software-Variabeln drin?
3) Wenn der hostname eindeutig ist, solltest du nicht LIKE nehmen sondern mit =. hostname='hostname'.

Ansonsten hab ich nicht wirklich verstanden was deine Frage ist.
 
1) MySQL
2) Ich habe die Möglichkeit, den Hostnamen des gerade anfragenden Rechners in einem SQL Query zu verwenden.
3) Genau darum geht es mir momentan. Like möchte ich vermeiden.

Nochmal ganz kurz. Aktuell kann sich jeder User von jedem Rechner an der Software einloggen. Künftig soll das anders sein. Beim Einloggen soll überprüft werden, ob ein Benutzer sich von diesem Rechner einloggen darf. Ich denke, dass die beste Möglichkeit hierfür ist, alle eindeutigen Prä- und Sufixfreien Hostnamen mit einem Komma getrennt in eine MySQL Spalte einzutragen. Aber habe ich dann bei dem SQL Query eine andere Möglichkeit, als über Like zu suchen?
 
Wenns Kommasepariert ist, kannst du mit FIND_IN_SET() suchen. Ich würde es aber normalisieren.

Annahme: Feld hostname: 'X1234,X5678,X9012'
SQL:
SELECT *
FROM users 
WHERE FIND_IN_SET('X5678', hostname)
 
Zuletzt bearbeitet von einem Moderator:
Zurück