2010-03-30 48 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