Hi there all, I have the following table (simplified for reference):
CREATE TABLE `search`(
`id` INT(11) NOT NULL PRIMARY KEY REFERENCES `data`(`id`),
`term` VARCHAR(255) NOT NULL,
INDEX(`id`)
)ENGINE=MyISAM;
- CREATE TABLE `search`(
- `id` INT(11) NOT NULL PRIMARY KEY REFERENCES `data`(`id`),
- `term` VARCHAR(255) NOT NULL,
- INDEX(`id`)
- )ENGINE=MyISAM;
let's say I have the following values in there:
INSERT INTO `search` VALUES(1,'RT');
INSERT INTO `search` VALUES(2,'Joe');
INSERT INTO `search` VALUES(3,'RT');
INSERT INTO `search` VALUES(4,'Joe');
INSERT INTO `search` VALUES(5,'Bill');
- INSERT INTO `search` VALUES(1,'RT');
- INSERT INTO `search` VALUES(2,'Joe');
- INSERT INTO `search` VALUES(3,'RT');
- INSERT INTO `search` VALUES(4,'Joe');
- INSERT INTO `search` VALUES(5,'Bill');
I am looking for a single query that will return the distinct search terms and also how many times each distinct terms comes up in the table, like the following:
RT | 2
Joe | 2
Bill | 1
So basically I'd like to comine two queries:
SELECT DISTINCT(`term`) FROM `search`
JOIN `data` ON `search`.`id`=`data`.`id`
WHERE `data`.`status` != 'D';
- SELECT DISTINCT(`term`) FROM `search`
- JOIN `data` ON `search`.`id`=`data`.`id`
- WHERE `data`.`status` != 'D';
AND
SELECT COUNT(`search`.`id`) FROM `search`
JOIN `data` ON `search`.`id`=`data.`id`
WHERE `data`.`status` != 'D'
AND `search`.`term`='RT';
- SELECT COUNT(`search`.`id`) FROM `search`
- JOIN `data` ON `search`.`id`=`data.`id`
- WHERE `data`.`status` != 'D'
- AND `search`.`term`='RT';
Let's leave all our *plum* where it is and go live in the jungle ...