Database
CREATE TABLE IF NOT EXISTS `author` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; INSERT INTO `author` (`id`, `name`) VALUES (1, 'HiO'), (2, 'Blu'), (3, 'Pouet'); CREATE TABLE IF NOT EXISTS `post` ( `a_id` INT(10) UNSIGNED DEFAULT NULL, `title` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `post` (`a_id`, `title`) VALUES (1, 'My name is HiO :)'), (NULL, 'I am an anonymous :)'), (2, 'My name is Blu :D'), (3, 'My name is Pouet ><'''); |
Subquery
SELECT *, (SELECT COUNT(post.a_id) FROM post WHERE post.a_id = author.id) AS post_count FROM `author` |
Result
$author = array( array('id'=>'1','name'=>'HiO','post_count'=>'1'), array('id'=>'2','name'=>'Blu','post_count'=>'1'), array('id'=>'3','name'=>'Pouet','post_count'=>'1') ); |
Subquery in where clause
SELECT * FROM `post` WHERE a_id IN (SELECT id FROM author) |
Result
$post = array( array('a_id'=>'1','title'=>'My name is HiO :)'), array('a_id'=>'2','title'=>'My name is Blu :D'), array('a_id'=>'3','title'=>'My name is Pouet ><\'') ); |