I am trying to join multiple rows of data onto a sql query.
My database consists of a few tables: clients, client_site_ip, and ip_accounting.
client_site_ip table has the following rows: siteid, userid, site_name and site_ip.
ip_accounting table has the following rows: id, src_address, dst_address, bytes and timeanddate.
clients table has the following rows: userid, username ...... and ipaddress
I am wanting clients to have multiple IP addresses so I have created the table client_site_ip
I need to query the database and get more than one row of data per ip address: userid | username | datapackage | sitename | ipaddress | packagename | speedlimit ........ the list goes a bit further.
I currently have this query that separates the IP addresses and everything by a comma but need it separated by rows of new data not commas:
SELECT 
    clients.userid, 
    clients.username, 
    clients.datapackage, 
    client_site_ip.userid, 
    GROUP_CONCAT(client_site_ip.site_name) AS sitenames, 
    GROUP_CONCAT(client_site_ip.site_ip) AS ipaddresses, 
    data_packages.packagename, 
    data_packages.speedlimit, 
    data_packages.threshold, 
    data_packages.accountingdays, 
    data_packages.throttlelimit, 
    data_packages.datalimitamount 
FROM 
    clients 
    JOIN client_site_ip ON clients.userid = client_site_ip.userid 
    JOIN data_packages ON clients.datapackage = data_packages.package_id 
GROUP BY 
    clients.userid
I also need my synchronization query updated, the current script looks like:
SELECT ip_address
              ,SUM(upload_bytes) as upload_bytes
              ,SUM(download_bytes) as download_bytes
              ,sum(upload_bytes + download_bytes) as totalbytes
              ,package_id
              ,username
              ,userid
              ,networkaccess
              ,packagename
              ,speedlimit
              ,threshold
              ,throttlelimit
              ,extendeddata
              ,datalimitamount
              ,accountingdays
        FROM (
              (SELECT ip_accounting.src_address as ip_address
                     ,SUM(ip_accounting.bytes) AS upload_bytes
                     ,0 as download_bytes
                     ,clients.username
                     ,clients.userid
                     ,clients.networkaccess
                     ,clients.extendeddata
                     ,data_packages.package_id
                     ,data_packages.packagename
                     ,data_packages.speedlimit
                     ,data_packages.threshold
                     ,data_packages.throttlelimit
                     ,data_packages.datalimitamount
                     ,data_packages.accountingdays
              FROM ip_accounting
              join clients on clients.ipaddress = ip_accounting.src_address
              join data_packages on data_packages.package_id = 
clients.datapackage
              WHERE dst_address NOT BETWEEN INET_NTOA('192.168.0.1') AND 
INET_NTOA('192.168.255.254')
              and timeanddate BETWEEN SUBDATE(CURRENT_TIMESTAMP(), INTERVAL 
data_packages.accountingdays DAY) AND CURRENT_TIMESTAMP()
              GROUP BY src_address)
              UNION ALL
              (SELECT ip_accounting.dst_address as ip_address
                     ,0 AS upload_bytes
                     ,SUM(ip_accounting.bytes) as download_bytes
                     ,clients.username
                     ,clients.userid
                     ,clients.networkaccess
                     ,clients.extendeddata
                     ,data_packages.package_id
                     ,data_packages.packagename
                     ,data_packages.speedlimit
                     ,data_packages.threshold
                     ,data_packages.throttlelimit
                     ,data_packages.datalimitamount
                     ,data_packages.accountingdays
               FROM ip_accounting
               join clients on clients.ipaddress = ip_accounting.dst_address
               join data_packages on data_packages.package_id = clients.datapackage
               WHERE src_address NOT BETWEEN INET_NTOA('192.168.0.1') AND INET_NTOA('192.168.255.254')
               and timeanddate BETWEEN SUBDATE(CURRENT_TIMESTAMP(), INTERVAL data_packages.accountingdays DAY) AND CURRENT_TIMESTAMP()
               GROUP BY dst_address)
                ) a
        GROUP BY ip_address
        ORDER BY INET_ATON(ip_address)