我有两个问题。我不知道如何只用一个产生同样的效果。我不喜欢SQL ...
这是伪代码:
friends = query("
SELECT `bio_contacts`.`contact_id`
FROM `bio_contacts`
WHERE `bio_contacts`.`user_id` = '33'
")
query("
SELECT `bio_community_events`.`id`, `bio_community_events`.`begin_on`, `bio_community_events`.`name`
FROM `bio_community_events`
WHERE `bio_community_events`.`user_id` IN friends
")
有没有办法将它们合并为一个查询?我猜它应该会提高性能。有了加入,也许?
答案 0 :(得分:2)
SELECT `bio_community_events`.`id`, `bio_community_events`.`begin_on`, `bio_community_events`.`name`
FROM `bio_contacts`
LEFT JOIN `bio_community_events`
ON `bio_contacts`.`contact_id`= `bio_community_events`.`user_id`
WHERE `bio_contacts`.`user_id` = '33'
答案 1 :(得分:1)
您的查询甚至不需要加入。 你可以这样说:
SELECT
bio_community_events
。id
,bio_community_events
。begin_on
,bio_community_events
。name
来自bio_community_events
在bio_community_events
。user_id
= 33;
或者 - 您的字段名称有点偏离,我们是否应该加入以下字段:bio_contacts.contact_id = bio_community_events.user_id?在那种情况下你可以做到 以下加入:
SELECT `bio_community_events`.`id`, `bio_community_events`.`begin_on`, `bio_community_events`.`name`
FROM `bio_community_events` INNER JOIN `bio_contacts` on `bio_community_events`.user_id=bio_contacts.contact_id
WHERE bio_contacts.user_id=33;