Allgemeiner Vergleich von Daten

Allgemeiner Vergleich von Daten

am 08.09.2006 10:57:15 von benjamin235

Hallo Leute!

Ich hab mal wieder eine Frage, die ich nicht im Ansatz lösen kann. Ich
muss in einer Tabelle alle Requests und die dazugehörigen Responses
zählen, bei denen folgendes gleich ist:

Die SRC_IP des Requests soll mit der DST_IP des Responses
übereinstimmen und die DST_IP des Requests soll mit der SRC_IP des
Responses auch gleich sein. Anders gesagt: Die Adresse in der SRC_IP
eines Requests muss gleich der Adresse eines Responses in der Spalte
DST_IP sein und zur Überprüfung das ganze dann nochmal umgekehrt. Ich
hab das ganze mal in einer VIEW gemacht und auch nur für eine einzige
IP:

1 VIEW:
CREATE VIEW req AS SELECT COUNT(SRC_IP) FROM mydb.test WHERE
mydb.test.TYPE LIKE "Request" AND mydb.test.SRC_IP LIKE
"193.254.174.18";

2 VIEW:
CREATE VIEW res AS SELECT COUNT(DST_IP) FROM mydb.test WHERE
mydb.test.TYPE LIKE "Response" AND mydb.test.DST_IP LIKE
"193.254.174.18";


Das klappt auch hervorragend, nur es ist eben nur für eine IP, ich
brauch aber alle möglichen Kombinationen, bei denen das oben
beschriebene zutrifft! Wie kann ich das so allgemein formulieren, dass
ich alle einzelnen Kombis bekomme?

Hoffentlich könnt ihr mir da helfen - bin am Verzweifeln!

Re: Allgemeiner Vergleich von Daten

am 08.09.2006 10:58:50 von Dietmar Staritz

Benjamin Maus wrote:
> Hallo Leute!
>
> Ich hab mal wieder eine Frage, die ich nicht im Ansatz lösen kann. Ich
> muss in einer Tabelle alle Requests und die dazugehörigen Responses
> zählen, bei denen folgendes gleich ist:
>
> Die SRC_IP des Requests soll mit der DST_IP des Responses
> übereinstimmen und die DST_IP des Requests soll mit der SRC_IP des
> Responses auch gleich sein. Anders gesagt: Die Adresse in der SRC_IP
> eines Requests muss gleich der Adresse eines Responses in der Spalte
> DST_IP sein und zur Überprüfung das ganze dann nochmal umgekehrt. Ich
> hab das ganze mal in einer VIEW gemacht und auch nur für eine einzige
> IP:
>
> 1. VIEW:
> CREATE VIEW req AS SELECT COUNT(SRC_IP) FROM mydb.test WHERE
> mydb.test.TYPE LIKE "Request" AND mydb.test.SRC_IP LIKE
> "193.254.174.18";
>
> 2. VIEW:
> CREATE VIEW res AS SELECT COUNT(DST_IP) FROM mydb.test WHERE
> mydb.test.TYPE LIKE "Response" AND mydb.test.DST_IP LIKE
> "193.254.174.18";
>
>
> Das klappt auch hervorragend, nur es ist eben nur für eine IP, ich
> brauch aber alle möglichen Kombinationen, bei denen das oben
> beschriebene zutrifft! Wie kann ich das so allgemein formulieren, dass
> ich alle einzelnen Kombis bekomme?
>
> Hoffentlich könnt ihr mir da helfen - bin am Verzweifeln!
>

CREATE VIEW res AS
SELECT COUNT(DST_IP) , mydb.test.DST_IP
FROM mydb.test WHERE
mydb.test.TYPE = "Response"
GROUP BY mydb.test.DST_IP;

und das andere äquivalent..
Sofern möglich, "Response" NICHT mit Like abfragen, wenn wirklich genau
der Wert so vorkommt, dann besser mit = , LIKE verursacht full table
scan , also Laufzeit..
Mittels Index auf der Spalte kann dann die Abfragezeit noch optimiert
werden.
MfG,
Dietmar
Hinweis, kann es im Mom. nicht testen, da keine passende DB zur Hand...

Re: Allgemeiner Vergleich von Daten

am 08.09.2006 11:14:39 von benjamin235

Hallo!


Super, das klappt genauso wie ich das wollte. Jetzt muss ich nur noch
die Datensätze der beiden VIEWs zusammenbringen. Dafür hab ich ne
andere Tabelle in die ich dann die Kombination der vorkommenden
Adressen eintragen muss. Wenn ich da Probleme haben sollte, dann meld
ich mich nochmal. Danke!