2012-01-19 23 views
2

夕方、ここで何を求めているのか分かりませんが、私は説明しようとします。私は、ユーザーによって投稿ジョブを一覧表示するには、上記を使用してジョブIDに基づいて、他のテーブルから他の情報を取得...SQL結合テーブル - 一致しない場合はnullを返します。

SELECT 
    qu.job_id, qu.engineer_id, qu.id AS `quote_id`, 
    jb.author, jb.image_ref, jb.job_title 
FROM 
    `ecom_quotes` qu, `ecom_jobs` jb 
WHERE 
    jb.author = 1 
AND 
    qu.job_id = jb.image_ref 
GROUP BY 
    jb.image_ref 

私はSQLでベストではないが、私がしようとします。

ジョブに引用符が投稿されていないと、表示されない(qu.job_id = jb.image_ref)という問題があります。

だから、クイックフィックスとして(またはそう思った)私は仕事をした

((qu.job_id = jb.image_ref) OR (jb.image_ref != '')) 

でそれを置き換えますが、それに関連付けられている引用符がない場合には、引用符のIDを返します。

私にできることはありますか?

+0

を引用がある場合、これはもう一度だけ結果を持ち帰る '左join' –

答えて

5

LEFT JOINを使用します。

ecom_quotesに一致するレコードがない場合でも、これはまだecom_jobsのレコードを返します。

EDIT:テーブルの順序を交換...

SELECT 
    qu.job_id, qu.engineer_id, qu.id AS `quote_id`, 
    jb.author, jb.image_ref, jb.job_title 
FROM 
    `ecom_jobs` jb 
    LEFT JOIN `ecom_quotes` qu ON qu.job_id = jb.image_ref 
WHERE 
    jb.author = 1 
GROUP BY 
    jb.image_re 
+0

について何プレゼント...たぶん私はexplaingでごみを!私は仕事のためのすべての結果をユーザーが返すことができますが、誰かがそれを引用した場合に限ります。私は仕事が引用を持っていなくてもユーザーによって仕事を返すことができるようにしたいです。 –

+0

@PhilJackson Ahh ..私の間違い - 私は今それを得ると思います。新しいクエリはどのように機能しますか? –

+0

が完璧に近いです、あなたが何を変えたのか説明してください。多くのありがとう –

0

しようとしないのはなぜ:

SELECT 
    qu.job_id, qu.engineer_id, qu.id AS `quote_id`, 
    jb.author, jb.image_ref, jb.job_title 
FROM 
    `ecom_quotes` qu 
LEFT JOIN 
    `ecom_jobs` jb ON qu.job_id = jb.image_ref 
WHERE 
    jb.author = 1 
GROUP BY 
    jb.image_ref 
+0

これはまた、見積もりが存在する場合にのみ結果を返します –

関連する問題