作者jjjkkkooo (接科噎歐)
看板Database
標題[SQL ] 動態的where條件 ?
時間Tue Nov 8 15:51:11 2011
小弟正在設計一個系統,可讓使用者寄站內信
於是設計了一個mail的Table如下
____________________________________________________________________________
id | source_uid | target_uid | title | content | source_del | target_del
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
1 | 2 | 5 | ooo | xxx | 1 | 0
2 | 3 | 2 | ooo | xxx | 0 | 1
source_uid代表寄信人;target_uid代表收件人
寄信人可以看到寄信備份;收件人可以看到寄信的內容
由於信件內容是一樣的,所以做這樣的設計
source_del代表寄信人刪除了
target_del代表收件人刪除了
二個都刪除了才會做真正的delete
現在問題來了,當我要撈使用者寄信與收信的mail id時會有個問題( mySQL )
假設使用者uid = 2
select * from mail where ( source_uid = 2 or target_uid = 2 )
↑上面這句可以找出使用者主動寄出的信與被動收到的信
但現在還要加上一個條件當uid是source時source_del需為 0
當uid是target時target_del需為 0
所以會想加上個where條件:
當uid為source時:where source_del = 0
當uid為target時:where target_del = 0
但不曉得怎麼下語法,曾經嚐試用IF,寫成:
where IF( source_uid = 2 , source_del, target_del' ) = 0
但行不通,不曉得該如何解決這問題?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.209.237
※ 編輯: jjjkkkooo 來自: 122.118.209.237 (11/08 15:52)
推 musie:用join... 11/08 15:56
→ musie:..打錯= =...union 11/08 15:57
→ jjjkkkooo:SQL真神奇,不一樣的思維很快就能解決問題 11/08 16:11
→ jjjkkkooo:感謝 musie 大 <(_ _)> 11/08 16:12
→ chenstin:WHERE (source_uid = 2 AND source_del = 0) OR 11/17 21:28
→ chenstin:(target_uid = 2 AND target_del = 0) 11/17 21:29