2011-09-16 14 views
0

私はデータベースと多対多の関係を持っているので、後で検索に使用するsqlクエリを作成しました。 私がしたいことは、検索結果(一意の会社名)から一意の値を取得することです。クエリ結果としてユニークな値を取得する

これは私のクエリです:

SELECT agencies.company 
    ,agencies.website_url 
    ,agencies.STATUS 
    ,agencies.size 
    ,IndustryData.industry_id 
    ,ProfessionData.profession_id 
    ,SectorData.sector_id 
    ,seniorityData.seniority_id 
    ,ZonesData.zone_id 
FROM agencies 
LEFT JOIN (
    SELECT agencies_industries.agency_id 
     ,agencies_industries.industry_id 
    FROM agencies_industries 
    ) AS IndustryData ON agencies.id = IndustryData.agency_id 
LEFT JOIN (
    SELECT agencies_professions.agency_id 
     ,agencies_professions.profession_id 
    FROM agencies_professions 
    ) AS ProfessionData ON agencies.id = ProfessionData.agency_id 
LEFT JOIN (
    SELECT agencies_sectors.agency_id 
     ,agencies_sectors.sector_id 
    FROM agencies_sectors 
    ) AS SectorData ON agencies.id = SectorData.agency_id 
LEFT JOIN (
    SELECT agencies_seniorities.agency_id 
     ,agencies_seniorities.seniority_id 
    FROM agencies_seniorities 
    ) AS SeniorityData ON agencies.id = SeniorityData.agency_id 
LEFT JOIN (
    SELECT agencies_zones.agency_id 
     ,agencies_zones.zone_id 
    FROM agencies_zones 
    ) AS ZonesData ON agencies.id = ZonesData.agency_id 
WHERE IndustryData.industry_id = 3 
    AND ProfessionData.profession_id = 1 

結果は次のようになります。

会社、WEBSITE_URL、状態、サイズ、industry_id、profession_id、sector_id、seniority_idは、

    をZONE_ID
  1. nine nine.com 1 3 3 1 3 2 1
  2. 9 nine.com 1 3 3 1 3 2 5
  3. ナインnine.com 1 3 3 3 1 2 8
  4. ナインnine.com 1 3 3 3 1 5 1
  5. ナインnine.com 1 3 3 3 1 5
  6. ナインnine.com 1 3 3 1 3 5 8
  7. テンten.com 2 3 3 1 3 1 1
  8. テンten.com 2 3 3 1 1 3 3
  9. テンten.com 2 3 3 1 3 1 7
  10. テンten.com 2 3 3 1 3 3 1
  11. テンten.com 2 3 3 1 3 3 3
  12. テンten.com 2 3 3 1 3 3 7
  13. テンten.com 2 3 3 1 3 5 1
  14. テンten.com 2 3 3 1 3 5 3
  15. テンten.com 2 3 3 1 3 5 7

私は会社名の繰り返しを取り除きたいと思います。それ、どうやったら出来るの?

+1

多くの方法があります - あなたがが、異なる最後の二つの値をどのように処理するかをしたいですか? – RedFilter

+0

あなたは会社名以上を望みますか?後で、私はidをと多分、ちょうど十分であろう検索 – Matschie

+0

が異なる二つの値を心配していない単なる一例である>、私はにボタンを追加します特定の企業を表示し、代理店に関する正確な情報があります。 –

答えて

0

あなたはこのためGROUP BYを、使用することができます例えば:

SELECT agencies.company 
    ,agencies.website_url 
    ,agencies.STATUS 
    ,agencies.size 
    ,IndustryData.industry_id 
    ,ProfessionData.profession_id 
    ,SectorData.sector_id 
FROM ... 
GROUP BY agencies.company 
    ,agencies.website_url 
    ,agencies.STATUS 
    ,agencies.size 
    ,IndustryData.industry_id 
    ,ProfessionData.profession_id 
    ,SectorData.sector_id 
+0

ありがとう、これは私が必要とするexcactlyです。 –

0

いくつかの例をここに示すようにたぶん、あなたは、変数やサブクエリでそれを行うことができます:

http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

をしかし、おそらくあなたのコードでこれを行うことはあなたのクエリよりも高速です。

関連する問題