Hilfe MySQL werte aus zwei verschiedenen Tabellen vergleichen + insert

alme3333

Neuer Benutzer
Beiträge
3
Hallo liebe Community,

habe folgendes Problem bin gerade mit einem Projekt beschäftigt wo ich Netzwerkdaten in meine DB speicher und diese Daten dann mit Java auswerte da es sehr große Datenmengen sind versuche ich auf der DB die wichtigsten Daten in andere Tabellen umzuspeichern und auszuwerten.

Ich habe eine Tabelle in der alle Daten vorhanden sind nun will ich zum Beispiel dem Port 80 den Namen HTTP zuweisen damit man weiß welches Protokoll gemeint ist leider funktioniert dies nicht wie gewünscht. Diese Information soll aber in einer separaten Tabelle stehen. Um zu wissen welcher Port welchen Namen trägt habe ich ebenfalls eine Tabelle erstellt mit der die Tabelle wo alle Daten vorhanden sind verglichen werden kann.

Zusätzlich würde ich gerne alle IP Adressen die die gleiche src bzw. dst haben zusammenfassen und in eine andere Tabelle speichern wo der verbrauch zwischen den jeweiligen Verbindungen enthalten sein soll.

Hier die Fotos auf Google Drive verlinkt.

open

Hier sieht man die Tabelle mit allen Daten.



open

Hier sollte die Zuordnung von der Port Nummer zum Port Namen sein.


open

Hier ist die Tabelle die zum vergleichen da ist damit man weiß welche Port Nummer welchen Namen trägt.


open

Diese Tabelle soll src und dst beinhalten und deren verbrauch.

Hier die Fotos die Hochgeladen worden sind falls es funktioniert hat :D

alle_daten.PNG
Hier sieht man die Tabelle mit allen Daten .



Ports.PNG
Hier ist die Tabelle die zum vergleichen da ist damit man weiß welche Port Nummer welchen Namen trägt.



port_name.PNG
Hier sollte die Zuordnung von der Port Nummer zum Port Namen sein.




src_dst.PNG
Diese Tabelle soll src und dst beinhalten und deren verbrauch.



Ich bedanke mich schon im voraus für jede Hilfe bin langsam am verzweifeln.
 
Werbung:
Deine Bildchen sind unvollständig. Egal, prinzipiell suchst Du Joins und Aggregationen. Als Demo:

Code:
test=# create table ports (port int primary key, name text);
CREATE TABLE
test=*# insert into ports values (80, 'https');
INSERT 0 1
test=*# insert into ports values (5432, 'postgresql');
INSERT 0 1
test=*# create table traffic(src inet, dst inet, dst_port int references ports, bytes int);
CREATE TABLE
test=*# insert into traffic values ('10.0.0.22','10.0.0.1',80, 100);
INSERT 0 1
test=*# insert into traffic values ('10.0.0.23','10.0.0.1',80, 200);
INSERT 0 1
test=*# insert into traffic values ('10.0.0.22','10.0.0.1',5432, 500);
INSERT 0 1
test=*# select t.src, t.dst, p.name, sum(t.bytes) from traffic t left join ports p on t.dst_port=p.port group by t.src, t.dst, p.name;
  src  |  dst  |  name  | sum
-----------+----------+------------+-----
 10.0.0.23 | 10.0.0.1 | https  | 200
 10.0.0.22 | 10.0.0.1 | postgresql | 500
 10.0.0.22 | 10.0.0.1 | https  | 100
(3 rows)

test=*#

[code]
 
Vereinfacht gesagt braucht deine Port-Tabelle nicht mal IDs, die Portnummer selbst ist vermutlich einmalig und kann für den Join herhalten. Du brauchst aber Aliase für die Tabellen wenn du die Ports mehrfach joinst:
Code:
SELECT datentabelle.*,p1.PortName AS SrcPortName,p2.PortName AS DstPortName
FROM datentabelle
LEFT JOIN porttabelle p1 ON datentabelle.SrcPort = p1.PortNumber
LEFT JOIN porttabelle p2 ON datentabelle.DstPort = p2.PortNumber
 
Bin sehr beeindruckt von der Community hier das ging ja sehr schnell ich danke euch sehr hat wunderbar funktioniert :D

Könnte mir einer von euch noch erklären was genau ein Left Join macht ?
 
Werbung:
Zurück
Oben