Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
[SQL] Tabelleneinträge in WHERE Klausel übernehmen
Also, ich habe 2 Tabellen:
bots und visits.
In bots stehen suchmuster um bots rauszufiltern (bot, Ask Jeeves, crawler etc.)
Nun möchte ich aus visits alle einträge, die keine bots laut useragent sind.
Natürlich kann ich nun aus bots per Hand ein NOT (useragent LIKE %bot% OR useragent LIKE %.. machen, aber könnte man das nicht auch in SQL eleganter lösen?
In bot steht nicht der genaue useragent, sondern auszüge davon, deshalb auch das LIKE.
phlox
__________________ Intelligenz ist eine Illusion des Menschen
Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx
Gib mal die Tabellenstruktur an und vielleicht ein paar Beispieldatensätze. Sonst kann zumindest ich mir schwer vorstellen, womit man's hier genau zu tun hat.
Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx
Käme auf einen Versuch an, ob solche Schweinereien funktionieren:
code:
1:
2:
3:
4:
5:
SELECT *
FROM sites
LEFT JOIN bots
ON sites.useragent LIKE CONCAT('%',bots.name,'%')
WHERE bots.id IS NULL
Am besten wär's wohl aber, die Tabelle sites beim Befüllen bereits mit einem Flag "Bot oder nicht" zu versehen. Basierend auf bisher erkannten Suchmustern kannst du dieses Flag setzen, und wenn du später weitere Suchmuster hast, die einen Bot identifizieren, kannst du da auch im Nachhinein noch ein Skript drüber jagen, welches die einzelnen Hits, die noch nicht als Bot identifiziert wurden, markiert.