2011-12-06 48 views
1

我现在设置了2个表格(Jobs和Bids)。它们通过job_id绑定在一起,job_id在Jobs表中是唯一的,但不在Bids中。在Jobs表中,也是位置信息。我需要做的是获得就业表中每个城市的最低出价。SQL从一对多关系中获取最低变量

基本上我需要抓住每个不同的城市,并让所有的工作在这个城市,然后抓住了工作的所有的出价,对它们进行比较并抓住最低出所有这些的。

我一直在试图做到这一点的SQL,但是将确定在PHP中使用foreach循环为好。

+0

对不起,我正在使用MySQL 5.0.8 – IceBlueFire

回答

3

JOIN两个表,然后GROUP BY城市:

SELECT j.city 
    , MIN(b.amount) AS minimum_bid 
FROM 
    Jobs AS j 
    JOIN       --- LEFT JOIN if you want cities 
    Bids AS b     --- without any bid, too 
     ON b.job_id = j.job_id 
GROUP BY j.city 
+0

这工作就像一个魅力,非常感谢你=) – IceBlueFire

1

如果我理解正确的话,你在找什么是

SELECT MIN(bids_field) 
    FROM jobs, bids 
    WHERE jobs.job_id = bids.job_id 
GROUP BY location 
1

可能:

SELECT jobs.city, MIN(bids.bid_amount) 
FROM jobs 
LEFT JOIN bids ON bids.job_id = jobs.job_id 
GROUP BY jobs.city; 
1

使用子查询找出最低出价金额,然后基于此进行过滤。

select b.* 
from job j 
join bid b 
on  b.job_id = j.job_id 
where b.amount = 
     (
     select min(b2.amount) 
     from bid b2 
     where b2.job_id = b.job_id 
     ) 
相关问题