The output looks like this...

+----------+-----+------+------+ ~snip~ +-------+
| Router   | 64K | 128K | 192K | ~snip~ | Total |
+----------+-----+------+------+ ~snip~ +-------+
| router_1 |   0 |    0 |    0 | ~snip~ |     6 |
| router_2 |   1 |    6 |    0 | ~snip~ |    70 |
| router_3 |   0 |    0 |    0 | ~snip~ |     3 |
| router_4 |   0 |    0 |    0 | ~snip~ |     3 |
| router_5 |   0 |    0 |    0 | ~snip~ |     1 |

interface.description isn't listed and I'd like it to stay this way.  

interface.description is usually a unique value.  However, when an interface
gets moved, a new record gets created with the same interface.description
but different interface.id and interface.name values.  I'd like to eliminate
those semi-duplicate records from the count.  I know...I could modify the
records when an interface changes but for various reasons I need to keep
both the before and after data.

Jack

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Tuesday, June 01, 2004 1:52 PM
To: Jack Coxen
Cc: MySQL List (E-mail)
Subject: Re: DISTINCT query



Jack,

I am not sure what you want your output to look like... If you want the
same columns (the routerid with the counts of how many interfaces operate
at which speed) but broken down by unique descriptions that means to me
that you have multiple descriptions for each unique interface ID... Is this
the case? If it isn't then your existing GROUP BY will already make your
report unique by interface.comment (because there is only 1 comment per ID,
understand?)

If you could provide a prototype header to the report you want to make I
will try my best to help you work it out.

Yours,

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine




 

                      Jack Coxen

                      <[EMAIL PROTECTED]        To:       "MySQL List
(E-mail)" <[EMAIL PROTECTED]>                    
                      ve.com>                  cc:

                                               Fax to:

                      06/01/2004 01:12         Subject:  DISTINCT query

                      PM

 

 





I'm having trouble with a query and hope someone of the list can help.  I'm
running version 4.0.16.  I'm trying to query against two tables:

mysql> DESCRIBE router;
+-------+---------------------+------+-----+---------+----------------+
| Field | Type                | Null | Key | Default | Extra          |
+-------+---------------------+------+-----+---------+----------------+
| rid   | int(11) unsigned    |      | PRI | NULL    | auto_increment |
| name  | char(120)           |      |     |         |                |
| pop   | char(10)            |      |     |         |                |
| popid | tinyint(3) unsigned |      |     | 0       |                |
+-------+---------------------+------+-----+---------+----------------+
4 rows in set (0.04 sec)

mysql> DESCRIBE interface;
+-------------+---------------------------+------+-----+---------+----------

------+
| Field       | Type                      | Null | Key | Default | Extra
|
+-------------+---------------------------+------+-----+---------+----------

------+
| id          | int(11) unsigned          |      | PRI | NULL    |
auto_increment |
| name        | char(255)                 |      |     |         |
|
| rid         | int(11)                   |      |     | 0       |
|
| speed       | bigint(11)                | YES  |     | NULL    |
|
| description | char(255)                 | YES  |     | NULL    |
|
| status      | enum('active','inactive') | YES  |     | active  |
|
+-------------+---------------------------+------+-----+---------+----------

------+
6 rows in set (0.02 sec)

using the following query:

SELECT router.name AS Router,
    SUM(IF(speed<='64000',1,0)) AS 64K,
    SUM(IF(speed='128000',1,0)) AS 128K,
    SUM(IF(speed='192000',1,0)) AS 192K,
    SUM(IF(speed='256000',1,0)) AS 256K,
    SUM(IF(speed='384000',1,0)) AS 384K,
    SUM(IF(speed='512000',1,0)) AS 512K,
    SUM(IF(speed='768000',1,0)) AS 768K,
    SUM(IF(speed='1024000',1,0)) AS 1M,
    SUM(IF(speed='1152000',1,0)) AS 1152K,
    SUM(IF(speed='1280000',1,0)) AS 1280K,
    SUM(IF(speed='1536000'
        OR speed='1544000',1,0)) AS 'V/T1',
    SUM(IF(speed='3000000',1,0)) AS 3M,
    SUM(IF(speed='6000000',1,0)) AS 6M,
    SUM(IF(speed='9000000',1,0)) AS 9M,
    SUM(IF(speed='10000000',1,0)) AS 10M,
    SUM(IF(speed='12000000',1,0)) AS 12M,
    SUM(IF(speed='24000000',1,0)) AS 24M,
    SUM(IF(speed>'40000000'
        AND speed<'46000000',1,0)) AS 'DS3/T3',
    SUM(IF(speed='100000000',1,0)) AS 100M,
    SUM(IF(speed='155000000',1,0)) AS OC3,
    SUM(IF(speed>'599000000'
        AND speed<'650000000',1,0)) AS OC12,
    SUM(IF(speed='1000000000',1,0)) AS Gigabit,
    SUM(IF(speed='115000',1,0)) AS Dialup,
    SUM(IF(speed>'64000'
        AND speed!='128000'
        AND speed!='192000'
        AND speed!='256000'
        AND speed!='384000'
        AND speed!='512000'
        AND speed!='768000'
        AND speed!='1024000'
        AND speed!='1152000'
        AND speed!='1280000'
        AND speed!='1536000'
        AND speed!='1544000'
        AND speed!='3000000'
        AND speed!='6000000'
        AND speed!='9000000'
        AND speed!='10000000'
        AND speed!='12000000'
        AND speed!='24000000'
        AND speed NOT BETWEEN '40000000' AND '46000000'
        AND speed!='100000000'
        AND speed!='155000000'
        AND speed NOT BETWEEN '599000000' AND '650000000'
        AND speed!='1000000000'
        AND speed!='115000',1,0)) AS Other,
    COUNT(*) AS Total
    FROM router INNER JOIN interface USING (rid)
    GROUP BY router.rid
    ORDER BY router.name;

The query as written runs fine.  My problem is that I want to SELECT only
DISTINCT values for interface.description and not display the descriptions
in the result.

Is this possible?  And if so, how do I do it?

Thanks,

Jack

Jack Coxen
IP Network Engineer
TelCove
712 North Main Street
Coudersport, PA 16915
814-260-2705





Reply via email to