I have two table I want to show one photo for every post but when the run query show post for every photo
Photo table :
+------------------------------------------------------------+ | photo_id | post_id | photo_name | +------------------------------------------------------------+ | 1 | 1 | flower.jpg | +------------------------------------------------------------+ | 2 | 1 | book.jpg | +------------------------------------------------------------+ | 3 | 2 | pen.jpg | +------------------------------------------------------------+ | 4 | 3 | man.jpg | +------------------------------------------------------------+ | 5 | 3 | women.jpg | +------------------------------------------------------------+ | 6 | 3 | boy.jpg | +------------------------------------------------------------+
Post table :
+--------------------------------+ | post_id | post_title | +--------------------------------+ | 1 | flower | +--------------------------------+ | 2 | book | +--------------------------------+ | 3 | pen | +--------------------------------+ | 4 | man | +--------------------------------+ | 5 | women | +--------------------------------+ | 6 | boy | +--------------------------------+
use flowing SQL Query and INNER JOIN but my result show like this :
SELECT Photo.photo_name, Post.post_title FROM Photo INNER JOIN Post ON Photo.post_id = Post.post_id ORDER BY Post.post_id
Result Query after execute :
+-----------------------------+ | post_title | photo_name | +-----------------------------+ | flower | flower.jpg | +-----------------------------+ | flower | flower.jpg | +-----------------------------+ | book | book.jpg | +-----------------------------+ | book | book.jpg | +-----------------------------+ | pen | pen.jpg | +-----------------------------+ | pen | pen.jpg | +-----------------------------+ | man | man.jpg | +-----------------------------+ | man | man.jpg | +-----------------------------+ | women | women.jpg | +-----------------------------+ | women | women.jpg | +-----------------------------+ | boy | boy.jpg | +-----------------------------+ | boy | boy.jpg | +-----------------------------+
I have 6 posts in post table and I want to get one photo for every post but my result show post by photo count
Advertisement
Answer
You can use group by. Since you have not defined, which photo to use in case of multiple photos for a post, we can get Max() photo for a post:
SELECT MAX(Photo.photo_name), Post.post_title FROM Photo INNER JOIN Post ON Photo.post_id = Post.post_id GROUP BY Post.post_id, Post.post_title ORDER BY Post.post_id