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 :
x
+------------------------------------------------------------+
| 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