2010-03-30 47 views
0
SELECT `profiles`.* 
    FROM `profiles` 
    INNER JOIN `friendships` 
    ON `profiles`.id = `friendships`.(CASE WHEN friendships.profile_id = 1 
    THEN`friend_id` ELSE `profile_id` END) 

如何使内部连接像profile.id = friendships(这里将选择需要的一个键)但它不起作用。请帮助:PMYSQL CASE当问题

它不能是:

  `profiles`.id = (CASE WHEN friendships.profile_id = 1 
     THEN `friendships`.`friend_id` ELSE `friendships`.`profile_id` END) 

回答

1
SELECT `profiles`.* 
FROM `profiles` 
INNER JOIN `friendships` 
ON `profiles`.id = (CASE WHEN friendships.profile_id = 1 
THEN friendships.`friend_id` ELSE friendships.`profile_id` END) 
+0

这里的问题是,我使用导轨和我使用:foreign_key =>“情况.. 。'和我不能使用的友谊.'profile_id',因为然后我得到︰friendships.friendships.'profile_id'和不工作 反正谢谢 – 2010-03-30 17:58:48

+0

对不起,我不熟悉导轨 – Andrey 2010-03-30 18:02:16

0

如何

SELECT `profiles`.* 
    FROM `profiles` 
    INNER JOIN `friendships` 
    ON (profiles.id = friendships.profile_id AND NOT (profile_id = 1)) 
     OR ((profiles_id =friendships.friend_id) AND (profile_id = 1)) 
+0

我不能。 rails已经生成了所有的代码: ... profiles.id = frienships。{只有在这里我可以添加任何代码} .... – 2010-03-30 18:19:28

+0

然后我认为你必须得到rails来生成一个不同的查询,一个允许JOIN上有多个条件。虽然我不知道轨道,所以我不能帮你。 – Loopo 2010-03-30 18:45:41