2016-11-29 22 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

相关问题