2011-12-06 8 views
1

私は現在2つのテーブルを設定しています(ジョブと入札)。ジョブIDはjob_idで結ばれていますが、Jobsテーブルでは一意ですが、入札では一意ではありません。また、Jobsテーブルには、ロケーション情報があります。私がする必要があるのは、jobsテーブルの各都市で最低の入札単価を得ることです。SQL 1対多の関係から最低の変数を取得する

本来、私はそれぞれのDISTINCT都市をつかみ、その都市のすべての仕事を得て、次に仕事のためのすべての入札をつかみ、それを比較してそれらのうちの最も低いものをつかむ必要があります。

私はSQLでそれをやろうとしてきましたが、phpでもforeachループを使用することができます。

+0

申し訳ありませんが、私はこれは魅力のように働いたのMySQL 5.0.8 – IceBlueFire

答えて

3

JOIN 二つのテーブル、そしてGROUP BY市:

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

を使用しています、)あなたは非常に感謝= – IceBlueFire

1

私はあなたが探しているものを、正しく理解していれば、おそらく

SELECT MIN(bids_field) 
    FROM jobs, bids 
    WHERE jobs.job_id = bids.job_id 
GROUP BY location 
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 
     ) 
1

使用サブクエリ:

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 
関連する問題