2016-11-29 24 views
1

我正在努力使用此MySQL語句,希望有人能幫助我。MySQL - 如何從表格「作業」中選擇所有,但排除表格「出價」中存在「bidderid」的結果(某些參考表格「出價」具有「bidjobid」)

我有以下表格,其中包含以下數據。

Jobs | Bids  | 
--------|-------------| 
JobID | bidManID | 
     | bidJobID | 

BidJobID作業ID是相互關聯的。

但我想從Jobs表中選擇所有結果,但忽略Bids表中存在「bidMANID」的結果。

我已經遍佈整個stackoverflow,但似乎無法找到正確的語句,因爲他們通常傾向於「從tablea中選擇所有常用名與tableb中的commonName相同」,但這是輕微的不同,因爲我想忽略其他表中存在其他表的結果,而其他表中存在其他表,但具有不同的公分母。

+0

是不是更容易做'show create table'和複製粘貼? – e4c5

+0

你有沒有例子?我認爲我以前沒有使用過。感謝您的快速回復 – user3676945

+0

「SELECT jobID,jobMemberID,jobCategory,jobDescription,jobBidCount,jobPhoto1FileName,jobPhoto2FileName,jobPhoto3FileName,jobPhoto4FileName,jobFromLatitude,jobFromLongitude,jobToLatitude,jobToLongitude,jobFromPongcode,jobToPostcode FROM jobs where jobID IN(SELECT DISTINCT bidJobID FROM bids WHERE bidManID =?)ORDER BY jobListTime DESC「 這與我想要的結果完全相反,但我試過了」NOT IN「,它不返回結果 – user3676945

回答

0

感謝大家的投入和耐心做了一個例子。

一個朋友幫助解決這一問題,並將粘貼下面的工作陳述的任何人有類似的問題:

SELECT * FROM jobs WHERE jobID NOT IN (SELECT bidJobID FROM bids WHERE bidManID = ?) 

? = $ bidmanID(本地變量)

0

您希望所有有或沒有出價的工作,但不包含給定的bidManId? (希望我這次得到了正確的答案。)

SELECT j.* 
FROM jobs j 
LEFT JOIN bids b ON b.bidJobId = j.jobId 
WHERE b.bidManID != $yourBidManID OR b.bidJobID IS NULL 

當然,你需要製作一個正確的字符串。

+0

這不會工作,因爲它沒有提及「bidManID」,這將是至關重要的,因爲它是$ bidmanID等於我想從「jobs」結果中排除的「bids」表中的「bidManID」的地方 – user3676945

+0

因此,您希望給定bidManID沒有投標的所有工作?什麼是bidManID?你是否想要所有沒有出價的工作,或者只有那些出價不同bidManID的工作? – Seb

+0

所以想象一下,我選擇「jobs」的所有結果,然後用一個php(不是literaly)的例子來忽略我想從「bids」表得到的結果是: if($ bidmanID == $ row ['bidManID']){ //忽略結果,因爲本地變量$ bidmanID存在於「出價」 } 但我想在1個mysql語句中執行此操作。 「從'jobs'表中選擇所有結果」,但忽略$ bidmanID(局部變量)等於bidManID(在'bids'列中)的結果。 他們的共同之處是「jobsID」中的「jobID」和「bid」表中的「bidJobID」 – user3676945

0

一個LEFT JOIN例子已經給出,因此這裏是得到這個使用WHERE NOT EXISTS

SELECT j.* 
FROM jobs j 
WHERE NOT EXISTS (SELECT 1 FROM bids WHERE bidJobId = j.jobId); 
+0

這不起作用,因爲它沒有提及「 bidmanID「,因爲它是$ bidmanID等於我想從」jobs「結果中排除的」bids「表中的」bidManID「的地方 – user3676945

相關問題