2015-11-04 99 views
0

我试图让sql语句链接从一个表到另一个,并使用案例(或如果)如果用户有accesslevel 1那么声明应该是select * from campaigns,而如果你不是accesslevel 1你应该得到的选择语句为:Select INNER JOIN AND CASE

select * from campaigns WHERE campaign_Creator = ${user_ID} 

SELECT * FROM campaigns 
INNER JOIN users ON campaigns.CAMPAIGN_CREATOR = users.USER_ID 
    CASE WHEN users.USER_ACCESSLEVEL = 1 
    THEN SELECT * FROM campaigns 
    ELSE select * from campaigns WHERE CAMPAIGN_CREATOR = ${user_ID}; 

我会如何去创造这样一个声明?我一直在试图查找它,但是我更加困惑于如何解决这个问题。

+0

样本数据和期望的结果将是一个很大的帮助。 –

+0

不能这样做。一个select有一个不变的返回列数,与表数据无关。请加入,使用where(或on)来限制返回的行。 – jarlh

回答

1

也许这就是你想要的?

SELECT * FROM campaigns 
INNER JOIN users ON campaigns.CAMPAIGN_CREATOR = users.USER_ID 
WHERE users.USER_ACCESSLEVEL = 1 
    OR CAMPAIGN_CREATOR = ${user_ID}; 
0

我同意我们的朋友的解决方案,并补充遵循我的建议。

SELECT * 
    FROM campaigns 
    INNER JOIN users ON campaigns.CAMPAIGN_CREATOR = users.USER_ID 
    AND (users.USER_ACCESSLEVEL = 1 OR (users.USER_ACCESSLEVEL != 1 
             AND CAMPAIGN_CREATOR = ${user_ID}))