Jump to content

mysql 2 tables and count


poe

Recommended Posts

i have 2 tables


links (3 fields)
- id - | - name - | - url -
1 | msn | www.msn.com
2 | google web page | www.google.com
3 | cnn news | www.cnn.com
4 | yahoo home page | www.yahoo.com
etc...


clicks (2 fields)
- id - | - link_id -
1 | 2
2 | 4
3 | 4
4 | 1
5 | 3
6 | 3
7 | 4
etc...


as someone clicks a link, the link _id is recorded in my clicks table.

i now want to show the results by most popular link to least.

ie.
- rank - | - id - | - count - | - url - | - name -
1 | 4 | 73 | www.yahoo.com |  yahoo home page
2 | 3 | 24 | www.cnn.com | cnn news
3 | 2 | 18 | www.google.com | google web page
.... etc....


$query = " SELECT link_id, COUNT(link_id) AS id_count FROM clicks GROUP BY link_id ORDER BY id_count DESC ";


this will give me ...
- rank - | - id - | - count -
1 | 4 | 73
2 | 3 | 24
3 | 2 | 18
.... etc....


but, how do i get my results to include the data from links table (url, name)



$query = " SELECT clicks.link_id, COUNT(clicks.link_id) AS id_count, links.url, links.name FROM clicks, links GROUP BY link_id ORDER BY id_count DESC ";

if i use this query, my count is way off as if it takes the count multiplied by number of records in the links table
Link to comment
https://forums.phpfreaks.com/topic/23969-mysql-2-tables-and-count/
Share on other sites

You need to specify the join condition for the tables otherwise, as you have noticed, each record in one table is joined with every record in the other table
[code]
SELECT clicks.link_id, COUNT(clicks.link_id) AS id_count,
    links.url, links.name
FROM clicks INNER JOIN links ON links.id = clicks.link_id
GROUP BY link_id
ORDER BY id_count DESC
[/code]

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.