2015-11-04 4 views
0

Я пытаюсь получить оператор sql для ссылки из одной таблицы в другую и использовать случай (или если), если у пользователя есть уровень доступа 1, то утверждение должно быть select * from campaigns, тогда как если ур не accesslevel 1 u следует получить заявку на выбор как:Выберите заявление с 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

Не может быть сделано таким образом. Выбор имеет постоянное количество возвращенных столбцов, независимо от данных таблицы. Присоединитесь, используйте, где (или 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})) 
Смежные вопросы