0

次の SQL クエリに問題があります。ご覧のとおり、いくつかのテーブル (candidate_basic,candidate_lang,province_of_candidate,province,degree_of_candidate) を結合し、その結果を別のテーブル "professional_experience_basic" と結合しますが、クエリは複数のインスタンスを返します (例: id_candidate_basic= に対して 2 つのインスタンスを返します)。 55、または id_candidate_basic=59 の 3 つのインスタンスを返します)。

私の問題は、クエリが id_candidate_basic ごとに 1 つのインスタンスを返すことだけを望んでいることです。つまり、値が 1 の属性「main_job」を持つインスタンスであり、これが不可能な場合は単に null です。

AND professional_experience_basic.main_job=1を WHERE 句の中に入れようとしましたが、 main_job=nullのインスタンスが削除されました。

最終結果に近づいていると感じていますが、この最後の努力には多くの時間を費やしました。誰かが解決策を知っていますか?前もって感謝します。

クエリ:

SELECT DISTINCT
    candidate_basic.id_candidate_basic,
    candidate_lang.town,
    province.name,
    degree_of_candidate.id_degree_of_candidate,professional_experience_basic.main_job

FROM (((((candidate_basic
    INNER JOIN candidate_lang 
    ON candidate_lang.id_candidate_basic=candidate_basic.id_candidate_basic)
    INNER JOIN province_of_candidate
    ON province_of_candidate.id_candidate_basic=candidate_basic.id_candidate_basic)
    INNER JOIN province
    ON province.id_province=province_of_candidate.id_province)
    INNER JOIN degree_of_candidate
    ON degree_of_candidate.id_candidate_basic=candidate_basic.id_candidate_basic)
    LEFT JOIN professional_experience_basic
    ON professional_experience_basic.candidate_id=candidate_basic.id_candidate_basic)

WHERE candidate_basic.candidate_state=2
  AND degree_of_candidate.is_main_degree
  AND candidate_lang.id_website_lang=1

現在の結果:

ここに画像の説明を入力

私が望む結果:

ここに画像の説明を入力

4

2 に答える 2

-1

最初に結果をグループ化します

... AND candidate_lang.id_website_lang=1
GROUP BY 
    candidate_basic.id_candidate_basic,
    candidate_lang.town,
    province.name,
    degree_of_candidate.id_degree_of_candidate

main_job の最大値が必要だと思いますが、わかりません。選択を次のように変更します。

SELECT DISTINCT
    candidate_basic.id_candidate_basic,
    candidate_lang.town,
    province.name,
    degree_of_candidate.id_degree_of_candidate,MAX(professional_experience_basic.main_job)

ここで最大値が必要なようですが、わかりません

于 2013-04-03T14:57:06.627 に答える