SQL Query

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey ik heb de volgende query (Om een TOP15 aantal hacker(pogingen) per poort aan te geven..met het aantal hackpogingen erbij)

SELECT a.AANVAL, h.AANTALPOGINGEN, h.POORT
FROM HACKERS h, AANVALLEN a
WHERE h.AANVALNR = a.AANVALNR
ORDER BY h.AANTALPOGINGEN DESC
LIMIT 0 , 15

waar de volgende informatie uitkomt:

AANVAL AANTALPOGINGEN POORT
Large ICMP packet 3792 0
Large ICMP packet 3760 0
Large ICMP packet 3611 0
Large ICMP packet 3566 0
Large ICMP packet 3553 0
Large ICMP packet 3526 0
Src IP session limit 2301 64047
Src IP session limit 1920 56551
Src IP session limit 1661 53831
Src IP session limit 1544 56554
Large ICMP packet 1344 0
Src IP session limit 1273 50563
Src IP session limit 1070 50563
Src IP session limit 1053 56544
Src IP session limit 1048 50563

Nu wil ik in POORT(h.POORT) geen zelfde voorkomende poorten, Dit zou moeten kunnen met GROUP BY of DISTINCT ofzo? Maar ik weet niet hoe ik dit moet toepassen..

tabellen:
DATUM AANVALNR AANTALPOGINGEN IPADRES POORT

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
Waarom controleer je niet of de poort bestaat, indien die wel bestaat kan je bijvoorbeeld a (AANVALLEN) +1 zetten, zie het als een soort auto-increment ;)

Zoals hier in de MySQL "handleiding" staat beschreven:
SQL:
1
2
INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;


http://dev.mysql.com/doc/.../insert-on-duplicate.html

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dat kan met GROUP BY ja. Bedenk dan wel welke data je terug wil krijgen (van welke row of aggregate function).

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

En wat had je zelf al geprobeerd?

Heb je al nagedacht wat je met de informatie in 'aanval' en 'aantalpogingen' wil doen voor dezelfde poort nummers? Wat moet het resultaat zijn wanneer ik op dezelfde poort een 'Large ICMP Packet' aanval en een 'Src IP session limit' heb gedaan?

@manueltje22: en wat heeft dat precies met het probleem van de TS te maken?

[ Voor 12% gewijzigd door Verwijderd op 18-06-2009 15:07 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
SELECT a.AANVAL, h.AANTALPOGINGEN, h.POORT
FROM HACKERS h, AANVALLEN a
WHERE h.AANVALNR = a.AANVALNR
ORDER BY h.AANTALPOGINGEN DESC
LIMIT 0 , 15
GROUP BY h.POORT DESC

komt het volgende eruit:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY h.POORT DESC' at line 6

bij de volgende pakt die het verkeerd
SELECT a.AANVAL, h.AANTALPOGINGEN, h.POORT
FROM HACKERS h, AANVALLEN a
WHERE h.AANVALNR = a.AANVALNR
GROUP BY h.POORT DESC
ORDER BY h.AANTALPOGINGEN DESC
LIMIT 0 , 15

AANVAL AANTALPOGINGEN POORT
Src IP session limit 2301 64047
Src IP session limit 1920 56551
Src IP session limit 1661 53831
Src IP session limit 1544 56554
Src IP session limit 1053 56544
Src IP session limit 1048 50563
Src IP session limit 837 53828
Src IP session limit 733 1254
Src IP session limit 700 2582
Src IP session limit 699 2682
Src IP session limit 625 3289
Src IP session limit 616 2606
Src IP session limit 607 41856
Src IP session limit 605 41250
Src IP session limit 599 48830

dan krijg ik dus verkeerde aantal pogingen

Moet dit in een subquery?... ik wil gewoon van het einduitkomst dat h.poort nog GROUP BY gaat..
(die uuum a (aanvallen)+1 snap ik niet:(

Acties:
  • 0 Henk 'm!

Verwijderd

GROUP BY ... DESC ???
Wat wens je met een Descending group by te bereiken?? Dat kan helemaal niet 7(8)7 Je bent in de war met ORDER BY.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ahh

SELECT a.AANVAL, h.AANTALPOGINGEN, h.POORT
FROM HACKERS h, AANVALLEN a
WHERE h.AANVALNR = a.AANVALNR
GROUP BY h.POORT
ORDER BY h.AANTALPOGINGEN DESC
LIMIT 0 , 15

Dan nog blijft hij:

AANVAL AANTALPOGINGEN POORT
Src IP session limit 2301 64047
Src IP session limit 1920 56551
Src IP session limit 1661 53831
Src IP session limit 1544 56554
Src IP session limit 1053 56544
Src IP session limit 1048 50563
Src IP session limit 837 53828
Src IP session limit 733 1254
Src IP session limit 700 2582
Src IP session limit 699 2682
Src IP session limit 625 3289
Src IP session limit 616 2606
Src IP session limit 607 41856
Src IP session limit 605 41250
Src IP session limit 599 48830

waar dus lijkt me de bovenstaande aantal pogingen nog niet klopt.. ummmmmmmm

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Lees eens wat over GROUP BY, want ik had al lang en breed een hint gegeven dat dit ging gebeuren. Lees: research tot je mijn laatste opmerking begrijpt.

{signature}


Acties:
  • 0 Henk 'm!

  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 13:25
Je haalt wat dingen door elkaar volgens mij. MySQL helpt je hier niet mee want daar kun je wel doen wat jij intikt zonder dat je handige meldingen terugkrijgt.

Kijk eens goed naar je vraag en wat je intikt. (en gebruik ff codeas tags)
Lees dit ff door:
http://www.w3schools.com/sql/sql_groupby.asp en probeer opnieuw
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 
    a.AANVAL, 
    h.POORT,
    h.AANTALPOGINGEN
FROM 
    HACKERS h, 
    AANVALLEN a
WHERE 
    h.AANVALNR = a.AANVALNR
GROUP BY 
    a.AANVAL, 
    h.POORT
ORDER BY 
    h.AANTALPOGINGEN DESC 


Jij wilt per poort en aanvalstype het aantal pogingen zien en die laat je ook zien. Je gebruik alleen aggregraat functie dus die group by werkt niet. Stop dus ff een som in je selectie op de goeie plek en je bent er al bijna.

Zie ook boven mij.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Hoe Group By werkt kun je in onze Faq lezen ( Hoe werkt dat GROUP BY nu eigenlijk? )

Verder zou ik je willen vragen om je Queries netjes in code blokken te zetten, dan is het een stuk leesbaarder. ( Hoe post je code? / Hoe gebruik je de code tag? )

Als je groupt zal je alle velden waar je geen aggregate functie (MAX, MIN etc.) op los laat in de group by clause moeten opnemen, aangezien jij bij geen enkel veld een aggregate functie gebruikt zal je inderdaad geen goede restultaten krijgen. Ik raad je dus aan om eens een goede SQL tutorial te volgen.

Ook je topic titel laat nogal wat te wensen over. ( *** Over topictitels in PRG - lezen voor topic openen!!! *** ).

[ Voor 31% gewijzigd door Woy op 18-06-2009 15:39 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
Verwijderd schreef op donderdag 18 juni 2009 @ 15:06:
@manueltje22: en wat heeft dat precies met het probleem van de TS te maken?
Dat lijkt me simpel..
Nu wil ik in POORT(h.POORT) geen zelfde voorkomende poorten, Dit zou moeten kunnen met GROUP BY of DISTINCT ofzo? Maar ik weet niet hoe ik dit moet toepassen..
Hij zegt dat hij geen zelfde voorkomende poorten wil hebben, dus geen dubbele data wat betreft rows.
In mijn ogen kan die dan ook simpel een sleutel UNIQUE eraan geven zodat er sowieso geen dubbele poort in de database komt te staan.

Plus ik gaf de oplossing als er dubbele data is dat hij automatisch +1 gaat geven. Lees deze zin:
met het aantal hackpogingen erbij
SQL:
1
ON DUPLICATE KEY UPDATE c=c+1;

Hiermee doelde ik dus dat h.AANTALPOGINGEN bijvoorbeeld automatisch +1 krijgt. (Zie bovenstaand).

Acties:
  • 0 Henk 'm!

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 18-09 13:37

sopsop

[v] [;,,;] [v]

Manueltje22 schreef op donderdag 18 juni 2009 @ 16:41:
[...]


Dat lijkt me simpel..


[...]


Hij zegt dat hij geen zelfde voorkomende poorten wil hebben, dus geen dubbele data wat betreft rows.
In mijn ogen kan die dan ook simpel een sleutel UNIQUE eraan geven zodat er sowieso geen dubbele poort in de database komt te staan.

Plus ik gaf de oplossing als er dubbele data is dat hij automatisch +1 gaat geven. Lees deze zin:

[...]

SQL:
1
ON DUPLICATE KEY UPDATE c=c+1;

Hiermee doelde ik dus dat h.AANTALPOGINGEN bijvoorbeeld automatisch +1 krijgt. (Zie bovenstaand).
Hij wil een query waarin er geen dubbele poorten in komen. Jouw oplossing is om de tabel dan maar aan te passen?! Jij gaat er nu van uit dat de enige functie van zijn tabellen een top 15 van aanvallen tonen is.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey hey, ik had nog een paar tuts gevolgd.. en de group by functie snap ik nu ook door jullie!! thanx voor het helpen!
Pagina: 1