2016-03-06 68 views
-1

我有一個表具有字段即。如何爲此創建子查詢

id,is_public,added_by,is_delete 

方案possiblities:

當前用戶可以看到有記錄:

  1. added_by admin = 0 OR own id
  2. added_by another user AND is_public = 1
  3. **is_deleted=0**

current user's and admin's record is_public='0'記錄必須

SQLFIDDLE

我的查詢:

SELECT * FROM tblname 
WHERE 
is_delete='0' 
AND (added_by='0' OR added_by='15') //ex. current user id = 15 
AND is_public='1' 

但此查詢是不是給其他用戶的is_public='1'記錄

請幫助

+0

如果你喜歡,可以考慮下列行爲這個簡單的兩步過程:1.如果您還沒有這樣做,提供適當的創建和插入語句(和/或者一個sqlfiddle),這樣我們可以更容易地複製這個問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相符的所需結果集。 – Strawberry

+0

@Strawberry,http://sqlfiddle.com/#!9/435b2d/3 – SagarPPanchal

回答

0

我嘗試了一些更多得了成功,謝謝大家的支持:)

SELECT * FROM tblname 
WHERE 
is_delete = '0' AND 
(user_id = '0' OR user_id = '15' OR is_public = '1') 
1

您需要使用OR運算到您的選擇:

SELECT * FROM tblname 
WHERE 
is_delete='0' AND (
    (added_by='0' OR added_by='15') //ex. current user id = 15 
    OR is_public='1' 
) 

如果用戶看到任何自己的記錄被刪除或者沒有,那麼你可以使用這個SQL:

SELECT * FROM tblname 
WHERE 
added_by='15' //ex. current user id = 15 
OR (
    is_delete='0' AND (added_by='0' OR is_public='1') 
); 
+0

語法錯誤! '和( 或(added_by ='0'' – SagarPPanchal

+0

並刪除OR後的括號內,它沒有顯示當前用戶記錄有'is_public = 0' – SagarPPanchal

+0

對不起,我忘記刪除多餘的OR,而用第一個替換AND –

1

如何:

SELECT * FROM tblname 
WHERE 
is_delete='0' AND (
(added_by='0' OR added_by='15') //ex. current user id = 15 
OR is_public='1') 

這樣,你只顯示undleted職位,分別是:來自同一用戶或公衆

更新: 如果你想顯示當前用戶刪帖以及(因此受到用戶的所有帖子0/14,只有公衆,而不是刪帖由其他用戶:

SELECT * FROM temp 
WHERE 
(
    (user_id='0' OR user_id='15') OR 
    (is_delete='0' AND is_public='1') 
) 
+0

'當前用戶的is_public ='0''記錄必須顯示 – SagarPPanchal

+0

它是:在哪裏說「由用戶或公衆」 – SimSimY

+0

它不是顯示,當前用戶的非公開記錄意味着有'is_public ='0'' – SagarPPanchal