Ok - I see this: "keywords., Product., Price_Range.*"
How many columns are you really using? Typically, doing * in a select clause is not a good practice. You've found one of the reasons why its not.
GROUP BY needs to know which specific columns need to be grouped. It also works with the select clause. If you do * in the select clause, then you're telling SQL to grab all fields. What is GROUP BY supposed to group on if you're tossing everything in? GROUP BY wants only what you're interested in.
Lets see if this makes sense.
1 table. 4 fields (ID, Name, Address, Phone).
SELECT * FROM table GROUP BY Name
Here, because ID is part of * in the select, its unique and each row will be brought back. This isn't what you want.
But if you did:
SELECT Name FROM table GROUP BY Name
Then this will bring back all unique names. If AstroTeg appeared 3 times and your name once, then it would just bring back AstroTeg and your name as the only two rows.
Its likely this doesn't make much sense. If it doesn't, I HIGHLY recommend reading up on GROUP BY and how it works and interacts. Then practice tossing some queries together and see how it works.
Once you have GROUP BY down. You can then play with COUNT(). COUNT won't work until you've mastered GROUP BY. COUNT just keeps a running total of whatever you want. Lets use my example above. We want to count how many unique people there are (remember: 3 AstroTegs and one with your name - the count should be 2).
SELECT COUNT(Name) FROM table GROUP BY Name
Here, GROUP BY is required to make COUNT work. Put COUNT in without GROUP BY and you'll get a parse error (what is COUNT supposed to count up if you don't tell it to group data together? - otherwise everything will have a count value of 1 and that doesn't make any sense).