Terra wrote:
> Greetings,
<cut>
>
> mysql> select *,concat_ws('.',oct1,oct2,oct3,oct4)
>ip,concat(oct1,'.',oct2,'.',oct3,'.',oct4) test,count(*) c from ips group by
>oct1,oct2,oct3,oct4 having c>1;
>
>+------+------+------+------+------+-----+-------+--------------+----------------+---+
> | ID | OCT1 | OCT2 | OCT3 | OCT4 | SID | AVAIL | ip | test | c
>|
>
>+------+------+------+------+------+-----+-------+--------------+----------------+---+
> | 3424 | 63 | 151 | 144 | 84 | 0 | 1 | 63.151.144.8 | 63.151.144.84 | 2
>|
> | 3425 | 63 | 151 | 144 | 85 | 0 | 1 | 63.151.144.8 | 63.151.144.85 | 2
>|
> | 3426 | 63 | 151 | 144 | 86 | 0 | 1 | 63.151.144.8 | 63.151.144.86 | 2
>|
> | 3427 | 63 | 151 | 144 | 87 | 0 | 1 | 63.151.144.8 | 63.151.144.87 | 2
>|
> Notice the difference between the result columns of 'ip' and 'test'...
It is normal to have a difference there. It is not beacuse of how concat() and()
concat_ws() work, but how GROUP BY works.
In order to get predictable result you need to use:
select concat_ws('.',oct1,oct2,oct3,oct4) as IP, count(*) as c from ips group by
IP [having c > 1];
Your table is:
mysql> desc ips;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| ID | int(11) | | PRI | NULL | auto_increment |
| OCT1 | int(3) | | | 0 | |
| OCT2 | int(3) | | | 0 | |
| OCT3 | int(3) | | | 0 | |
| OCT4 | int(3) | | MUL | 0 | |
| SID | int(11) | | MUL | 0 | |
| AVAIL | int(1) | | | 0 | |
+-------+---------+------+-----+---------+----------------+
This is huge waste of space
To store OCT1..4 you use INT. INT always occupies 4 bytes no matter how it is
declared (3) is display size only in your case.
AVAIL also uses 4 bytes consider using ENUM() type
Step1. alter all OCT to TINYNT UNSIGNED - 1 byte range 0..255. Exactly what
you need.
This way you will save 4*3 = 12 bytes per row
Step2. Depending on your setup you might consider using single column: ip INT
UNSIGNED - 4 bytes.
Read about INET_NTOA() INET_ATON() functions and bitwise operators.
<cut>
>
> --
> Terra
> sysAdmin
> FutureQuest, Inc.
> http://www.FutureQuest.net
>
>
> ---------------------------------------------------------------------
> Before posting, please check:
> http://www.mysql.com/manual.php (the manual)
> http://lists.mysql.com/ (the list archive)
>
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
>
>
>
--
Best regards
--
For technical support contracts, visit https://order.mysql.com/?ref=msal
__ ___ ___ ____ __
/ |/ /_ __/ __/ __ \/ / Mr. Alexander Keremidarski <[EMAIL PROTECTED]>
/ /|_/ / // /\ \/ /_/ / /__ MySQL AB, Full-Time Developer
/_/ /_/\_, /___/\___\_\___/ Sofia, Bulgaria
<___/ www.mysql.com M: +359 88 231668
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php