SUBSIM Radio Room Forums

SUBSIM Radio Room Forums (https://www.subsim.com/radioroom/index.php)
-   General Topics (https://www.subsim.com/radioroom/forumdisplay.php?f=175)
-   -   36 members from hitting 65,000 (https://www.subsim.com/radioroom/showthread.php?t=183844)

krashkart 05-23-11 05:31 PM

Quote:

Originally Posted by STEED (Post 1669174)
Are now I see why jim so far ahead, double poster, what cheek. :O:


learn a thing or two

krashkart 05-23-11 05:32 PM

Quote:

Originally Posted by STEED (Post 1669174)
Are now I see why jim so far ahead, double poster, what cheek. :O:


from the master. :D

Anthony W. 05-23-11 06:59 PM

But I wanna use the squidopods...

Onkel Neal 05-23-11 07:58 PM

Quote:

Originally Posted by Penguin (Post 1669076)
Maybe I can help a little.
Is your second command meant like it looks? You would select everyone who had his last log-in in in the first 24 hours after joining, if a member logged in after this period, he would not be selected. I think you know from experience if spammers log in another time, or just create an account and never check back.

To check if someone was inactive for more than a year, it should look like User.Lastactivity - User.joindate > 31536000

Yes, sir, my intention is to look back at members who joined since Dec 1, 2010, have 0 posts, have a signature, and their last activity was 24 hours from their join date. We find many of the sig spammers simply make an account and never post or log in again.

I want to minimize deleting actual people, so if a guy joined Dec 20 and his last activity was Dec 23, then he stays. I don't mind a guy being inactive for 6 months, as long as he is not a spammer. Does that make sense?

Quote:

Originally Posted by Penguin (Post 1669076)
I think the <>"" can do the job to check if there is a sig (I guess that signaturparesed stores it in plain text), nicer would be Sigparsed.signatureparsed NOT LIKE ' '

As you obviously check two tables, User and Sigparsed, don't forget the JOIN command.

Cheers,
Penguin

Yes, I am studying up on the JOIN command, internal and external. I'm a real noob with SQL so I have to build this query from scratch. Anything you have to say on the subject is welcome, thanks, Penguin. :salute:

Penguin 05-24-11 05:27 AM

Quote:

Originally Posted by Neal Stevens (Post 1669249)
Yes, sir, my intention is to look back at members who joined since Dec 1, 2010, have 0 posts, have a signature, and their last activity was 24 hours from their join date. We find many of the sig spammers simply make an account and never post or log in again.

I want to minimize deleting actual people, so if a guy joined Dec 20 and his last activity was Dec 23, then he stays. I don't mind a guy being inactive for 6 months, as long as he is not a spammer. Does that make sense?

Yes, I am studying up on the JOIN command, internal and external. I'm a real noob with SQL so I have to build this query from scratch. Anything you have to say on the subject is welcome, thanks, Penguin. :salute:

Ok, this makes sense, if the spammer doesn't log in a second time.(didn't check out the spam hunt thread yet to look at actual spammer accounts ;))
EDIT: Found this one while randomly looking for spammers: http://www.subsim.com/radioroom/member.php?u=276634 He logged in 3 days after he registered , however most found had their last activity on the date of registration.

So the command to get all the infos about this account would look like this, this is the explicit statement, you can make it shorter, but this is better for the comprehension

SELECT *(all infos, or whatever you need)
FROM User AS U1 INNER JOIN Sigparsed AS S1 (just abbreviations to type less)
ON U1.UserID = S1.UserId (UserId, or something simular would be your unique key that you can find in both tables)
WHERE U1.Joindate >1291165261
AND (U1.Lastactivity - U1.joindate ) < 86400
AND U1.Totalposts < 2
AND S1.Signatureparsed NOT LIKE ' '
AND S1.signatureparsed IS NOT NULL
ODER BY U1.Username ;

Here is some material to learn SQL: A lecture by David Malan, who teaches at a little, unknown school on the East Coast. I think he is very articulate and intelligible: http://cs75.tv/2010/fall/#l=lectures...res/4/lecture4 At the lower left corner you'll find also the second part (lecture5)

If you are more of a beginner, there is also a SQL lecture in the introduction to Computer Science class found here: http://cs50.tv/2010/fall/ If a lecture is broken you may want to play with the course dates in the upper drop-down menu to access courses from previous years.

Onkel Neal 05-24-11 11:24 AM

Thanks so much for the help. I am going to have a look at those course, I find SQL very interesting, I just never got on track with a tutorial that I could follow.

Question: in your query, you stated
SELECT *(all infos, or whatever you need)
The info I would want to select would be userID, signature, homepage, right?


FROM User AS U1 INNER JOIN Sigparsed AS S1 (just abbreviations to type less)
Abbreviations for what? Or did you simply give the join names really short names, like U1 ? That makes sense.

AND U1.Totalposts < 2
That means any member with 1 post will not be selected, right? I can change that to < 1 and select all the 0 post users, right?

Listen, I really appreciate the help.
Neal

Penguin 05-24-11 11:54 AM

Quote:

Originally Posted by Neal Stevens (Post 1669699)
Thanks so much for the help. I am going to have a look at those course, I find SQL very interesting, I just never got on track with a tutorial that I could follow.

Question: in your query, you stated
SELECT *(all infos, or whatever you need)
The info I would want to select would be userID, signature, homepage, right?

np!
With the star it would show you all infos available (all columns) from both tables. If you want to use this statement to find the homepages it would just be something like this: SELECT U1.userpage - this would be usefull for a list of the userpages. To select more, just put a comma between, select U1.userpage, S1.signature, U1.shoesize, etc

Quote:

Originally Posted by Neal Stevens (Post 1669699)
FROM User AS U1 INNER JOIN Sigparsed AS S1 (just abbreviations to type less)
Abbreviations for what? Or did you simply give the join names really short names, like U1 ? That makes sense.

yes, it just gives short names for the tables in this search query, helps to avoid typing long names for the lazy ones ;) This is helpfull if you want to join several tables. If you want to use the real table names, just delete the "AS..."

Quote:

Originally Posted by Neal Stevens (Post 1669699)
AND U1.Totalposts < 2
That means any member with 1 post will not be selected, right? I can change that to < 1 and select all the 0 post users, right?

In the example, it would select all users with no or one posts. I thought this would make sense, as we saw today, many spammers make one post, however I think those accounts get vaporized eventually :DL.
If you want to select the users with no posts, you use either "= 0", "<1", or "IS NULL". It depends on how the totalposts column looks if a new user is created. If the db puts a 0 (numeric zero) into that column in the moment a new user registers, you can use one of the first two statements. If the column is empty untill the first postcount is written into it, you have to use the IS NULL statement.

razark 05-24-11 01:03 PM

Subsim:
Come for the spam hunts, stay for the SQL tutorials.

Onkel Neal 05-24-11 07:21 PM

Hahaha :har: Nice!

Paco 05-25-11 02:46 AM

Hi,

I'm coming from the SPAM-Hunt thread to this one.

Quote:

Originally Posted by Penguin (Post 1669437)
AND (U1.Lastactivity - U1.joindate ) < 86400


perhaps a little bit easier to handle:

AND (DATEDIFF(U1.Lastactivity, U1.joindat) < "amount of days you want")

BTW, the SQL looks very good for hunting spammers :salute:

Penguin 05-25-11 03:28 AM

Thanks for your input Paco, that's the reason why I put up the code here: always better if some more pair of eyes take look over it - no offence if you are a pirate :arrgh!: ;)

I am not sure though if Datediff works if the dates are stored as a timestamp and not in date format, without having to convert it - otherwise Datediff is certainly more elegant!

Onkel Neal 05-26-11 09:40 AM

Chinese Prisoners Allegedly Forced to Play 'World of Warcraft' :har:


Don't get any ideas!


Yeah, we got the query working, weeded out almost 1000 spam accounts, probably another 3000 to go.

geetrue 05-26-11 05:26 PM

You SQL guys are all a like ... for all we know you could be the same men in black that show up after UFO sightings :yep:

flatsixes 05-26-11 05:37 PM

All this talk about squirrels makes me hungry.
http://www.strangecosmos.com/images/content/15912.jpg

frau kaleun 05-26-11 06:24 PM

http://28.media.tumblr.com/tumblr_ll...1o1_r1_500.gif


All times are GMT -5. The time now is 12:13 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 1995- 2025 Subsim®
"Subsim" is a registered trademark, all rights reserved.