2017-04-20 138 views
0

我對這些結果有問題。我一直在努力,但沒有運氣。Mysql查詢不能正確返回

工作表

id, title ... all details 
    1, title1,... 
    2, title2,... 
    3, title3,... 
    4, title4,... 

job_user表

id,id_job,id_user 
1,1,1 
2,2,3 
3,3,3 
4,4,4 

following_job表

id,id_job,id_user 
1, 1, 3 

所以基本上,用戶3有2個職位(2,3),而他追蹤作業1所以,如果我以用戶3的身份登錄,我想獲得用戶<> 3的所有詳細信息(只是要求nt,我需要做)。我會得到的結果

id,id_job,id_user 
    1,1,1 
    4,4,4 

我的目標結果是:

id,title..., following_id 
     1,title1,...,1 
     4,title4,...,0 

的following_id將作爲上述結果,因爲用戶3接着id_job 1所以其following_id = 1,否則= 0和id_job 1,4將工作表連接以獲取關於它的詳細信息:標題...

我做後續/取消關注工作的功能

感謝所有

+0

這似乎是所有3個表格之間的簡單連接。你試過了什麼? – xQbert

+0

@xQbert感謝您的回覆。我嘗試了類似於JNevill的建議,但以不同的查詢順序。我會嘗試按照他的建議看 – trinhdh

回答

2

所以......這似乎是你想要的東西,如:

SELECT 
    jobs.id, 
    jobs.title, 
    jobs...., 
    CASE WHEN following_job.id_user = 3 THEN 1 ELSE 0 END as following_job 
FROM 
    jobs 
    INNER JOIN job_user ON job.id = job_user.id_job 
    LEFT OUTER JOIN JOIN following_job on job.id = following_job.id_job 
WHERE 
    job_user.id_user <> 3; 

加入根據您的架構所有三個表。通過WHERE子句進行篩選,以確保沒有作業不具有用戶3所具有的作業。然後使用CASE(或IF())語句來標記作業,其後跟用戶3

+0

following_job上的內部連接將消除除ID_USER 3之外的所有內容,然後where子句將其消除,因此...沒有記錄返回? – xQbert

+0

我想在左連接,然後寫INNER JOINs,因爲我很特別。我修好了。 :/ – JNevill

+0

我喜歡他們讓我微笑的特殊人物:P – xQbert