首页 > 解决方案 > 从两个mysql表中选择值

问题描述

我有两个名为Joband的表Bid。客户可以添加工作详细信息,并且多个供应商可以为该工作投标。一旦客户从投标中选择一个供应商,该供应商 ID (sId) 将在Job表上更新。我想选择具有投标价值的工作细节。

这是我试过的

SELECT job.id,job.title,job.desc,job.mobile,job.address, job.city,job.updatedAt,job.status,bid.value,customer.cName,supplier.sName
FROM job
LEFT JOIN customer 
     ON customer.id = job.cId 
LEFT JOIN supplier 
     ON supplier.id = job.sId
LEFT JOIN bid 
     ON bid.sId = job.sId`

但是这个查询显示了一些重复的混乱信息

job桌子 在此处输入图像描述

bid桌子 在此处输入图像描述

有两个供应商(sId=2 和 sId=1)竞标了第 5 号工作(我已在bid表上标记)。但是客户选择了 sId 2 的第 5 号工作。现在我想从那些没有混乱记录的表格中进行选择.

标签: mysqlsqldatabasejoinselect

解决方案


我认为您只是缺少投标的加入条件,该条件过滤了所选供应商。允许没有供应商的工作同时驱逐客户未选择供应商的工作的逻辑有点棘手,并在WHERE子句中实现:

SELECT ...
FROM job
INNER JOIN customer 
      ON customer.id = job.cId 
LEFT JOIN supplier 
      ON supplier.id = job.sId
LEFT JOIN bid 
     ON  bid.sId = job.sId 
     AND bid.jId = job.id   --> here
WHERE supplier.id IS NULL OR bid.id IS NOT NULL

推荐阅读