I had two queries – one that selects group_id by knowing the post_id, and one that checks that user is in that group. I tried to optimize them – put them together, but it now throws an error…
SELECT COUNT(bio_community_group_members.id) AS count
FROM `bio_community_group_members`
JOIN `bio_community_posts`
ON (`bio_community_posts`.`id` = `180`)
WHERE `bio_community_group_members`.`group_id` = 'bio_community_posts.group_id'
AND `bio_community_posts`.`user_id` = '34'
It says:
Unknown column ‘180’ in ‘on clause’.
Problem: I have that entry!
Table structure:
bio_community_posts:
id,user_id,group_id,- other stuff;
bio_community_group_members:
id,user_id,group_id,status,- other stuff;
I need to retrieve status from bio_community_group_members if it exists. That count thing was just because I didn’t knew how to start to build my query. 🙁
Thanks in advice.
Edit:
Hmm… now it works….. but any idea how to optimize those two queries and get one that also selects status?
SELECT `group_id`
FROM `bio_community_posts`
WHERE `id` = 180
SELECT COUNT(id) AS count
FROM `bio_community_group_members`
WHERE `group_id` = 41
AND `user_id` = '34'
Edit #2:
This is what I was looking for:
SELECT `bio_community_group_members`.`status`
FROM `bio_community_group_members`
JOIN `bio_community_posts` ON `bio_community_posts`.`group_id` = `bio_community_group_members`.`group_id`
WHERE `bio_community_group_members`.`group_id` = 41
AND `bio_community_group_members`.`user_id` = '34'
AND `bio_community_posts`.`id` = '180'
GROUP BY `bio_community_group_members`.`status`
Thanks! 🙂
Edit #3:
I guess that i need something like this…
SELECT `bio_community_group_members`.`status`
FROM `bio_community_group_members`
JOIN `bio_community_posts` ON `bio_community_posts`.`group_id` = `bio_community_group_members.group_id`
WHERE `bio_community_posts`.`id` = '180'
AND `bio_community_posts`.`user_id` = '34'
But:
[Err] 1054 – Unknown column ‘bio_community_group_members.group_id’ in ‘on clause’.
Edit #4:
Just found a bug in the query. Here is the ultimate solution:
SELECT `bio_community_group_members`.`status`
FROM `bio_community_group_members`
JOIN `bio_community_posts` ON `bio_community_posts`.`group_id` = `bio_community_group_members`.`group_id`
WHERE `bio_community_posts`.`id` = '180'
AND `bio_community_posts`.`user_id` = '34'
Remove the back-quotes(?) on 180, I think you meant ‘180’? Also remove single-quotes around the other column name, like this:
Edit after OP edit:
I’m not exactly sure what kind of optimization you are looking for, but I’m guessing it’s something like this?
Edit after comments:
Fixed your edit 3: