2016-09-07 2 views
0

여기에서 내가 성취하고자하는 것에 대한 아이디어를 얻으려면 사용자가 수신 또는 발신 메일 (나중에 읽거나 저장하는 등)에 "별표를 표시"할 수있는 매우 간단한 메일 시스템을 설정했습니다. 우리가 별표 메시지를 받고있는 경우, 위의 예에서두 열을 연결하여 MySQL에서 선택 하시겠습니까?

Random Digit 
User ID of Recipient 
User ID of Sender 
Message 
If recipient has starred message (0 for no, 1 for yes) 
If sender has starred the message (0 for no, 1 for yes) 

mail_id | recip_account | sender_account | message | recip_starred | sender_starred 
    1   5     10    Hello   0     1 
    2   10     5   A Reply   0     1 
    3   10    20    Test   1     0 
    4   15    20    Message  1     1 

: 시스템이 아주 간단하고 다음과 유사한 테이블 디자인과 함께 작동, 내가 여기에 관련이없는 일부 열을 삭제 한 점에 유의하시기 바랍니다 사용자 ID는 10이고 메시지 ID는 1, 3입니다. 아마도 운동을 할 수 있습니다.받은 편지함 또는 보낸 편지함 만 별도로 표시하면 별표가 표시된 메일을 쉽게 검색 할 수 있습니다. 여기에 문제는 각 사용자별로 하나의 폴더에 모든 '별표 표시된'메일을 표시하고 싶은데 어떤 사용자가 메일에 별표를 표시했는지 확인하거나 recip_account를 연결해야합니다. & recip_starred OR sender_account & sender_starred and reference 그게 사용자 ID에 대한거야?

$sql2 = "SELECT * FROM `ap_mail_system` WHERE `recip_account` = '$user_id' OR `sender_account` = '$user_id' ORDER BY `sent_date` DESC LIMIT 0, 12"; 
+0

'어디서 ... 및 recip_starred = 1'? –

+0

SENT 메시지 또는 RECEIVED 메시지를 개별적으로 표시하는 경우에는 작동하지만 메시지를 보낸 메시지와받은 메시지를 함께 표시하고있는 경우 시스템에서 해당 메시지의 별표를 표시 할 수 없으며 이것이 내 문제입니다. – Snappysites

답변

1

당신은 당신의 WHERE 절에 부울 논리의 비트를 필요로 다음과 같이 아무도 여기에 나를 도와 줄 수

, 현재 방법 내가 검색하고 결과입니다. 시도 :

SELECT * FROM `ap_mail_system` WHERE (`recip_account` = '$user_id' AND `recip_starred` = 1) OR (`sender_account` = '$user_id' AND `sender_starred` = 1) ORDER BY `sent_date` DESC LIMIT 0, 12 
+0

정확히 내가 뭘 찾고 있었는지, 대단히 감사합니다! – Snappysites

관련 문제