SQL从一对多关系中获取最低变量

时间:2011-12-06 20:31:01

标签: php sql

我现在有两张桌子(工作和出价)。它们由job_id捆绑在一起,这在Jobs表中是唯一的,但在Bids中则不是。同样在Jobs表中,是位置信息。我需要做的是在工作表中获得每个城市的最低出价。

基本上我需要抓住每个DISTINCT城市并获得该城市的所有工作,然后抓住所有工作的投标,比较它们并抓住所有这些中最低的。

我一直在尝试用SQL做,但也可以在php中使用foreach循环。

4 个答案:

答案 0 :(得分:3)

JOIN两个表格,然后是GROUP BY city:

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

答案 1 :(得分:1)

如果我理解正确,你要找的是

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

答案 2 :(得分:1)

可能:

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

答案 3 :(得分: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
       )