2016-12-02 6 views
0

私は または のクエリを使用して値を取得したいアプリケーションを設計しようとしています。私は3つのテーブルを持っています:text、image、audio各テーブルcomplaint_idの列は同じです。1つのキー値をテーブルに入れるべきか、またはテーブルに入れるべきでない場合に、3つのテーブルを結合するか?

注:レコードはテーブルテキストに挿入する必要があります。

なく(それは画像や音声を挿入するか否かをユーザに依存するため)画像や音声の場合には、またはではないかもしれ

テーブルレコード を挿入することができる:テキスト

complaint_id | text_note 
------------------------ 
    34556  | Hello 
    34557  | welcome 

表:画像

complaint_id | photo_link 
----------------------------- 
    34556  | photo_link 

テーブル:オーディオ

complaint_id | audio_link 
---------------------------- 
    34557  | audio_link 

私は、私は1つのクエリを設計しているが、それは私のためWOKいない

complaint_id | text_note | photo_link  | audio_link 
------------- ----------- ---------------- -------------- 
34556  | Hello | photo_link  | 
34557  | welcome |    | audio_link 

として出力したいです!

SELECT 
    * 
FROM 
    test t 
JOIN image i ON (
    t.complaint_id = i.complaint_id 
) 
JOIN audio a ON (
    t.complaint_id = a.complaint_id 
) 
GROUP BY 
    t.complaint_id 
+3

左ジョイント画像左ジョイントオーディオa – artm

+1

苦情には複数の画像または複数のオーディオファイルを使用できますか? – e4c5

+0

いいえ...! 1つの苦情は1つのイメージか1つのオーディオを持ちますかイメージはありませんオーディオはありませんがテキストは強制です –

答えて

0
SELECT 
    complaint_id, 
    IFNULL(text_note, '') text_note, 
    IFNULL(photo_link, '') photo_link, 
    IFNULL(audio_link, '') audio_link 
FROM 
    text 
LEFT OUTER JOIN image ON text.complaint_id = image.complaint_id 
LEFT OUTER JOIN audio ON text.complaint_id = audio.complaint_id 
+0

ありがとう!それは私のために働く....しかし、1つの問題は、アプリケーションで 'NULL'を与える​​が、私は ''(つまり空白)として欲しいです。 –

+0

テキストテーブルにオーディオテーブルまたはイメージテーブルのレコードが1つもない場合など、この回答は1つの条件では機能しません。 –

+0

私はIFNULL()をnvl()の代わりに使用しています....それは動作します!!! –

0
SELECT 
    COALESCE (
     i.complaint_id, 
     t.complaint_id, 
     a.complaint_id 
    ) complaint_id, 
    t.text_note, 
    i.photo_link, 
    a.audio_link 
FROM 
    [ text ] t 
FULL JOIN [ image ] i ON i.complaint_id = t.complaint_id 
FULL JOIN audio_link a ON a.complaint_id = t.complaint_id 
0

さて私は、Oracleでこのクエリを作ったし、それが正常に動作します!

SELECT 
    a.complaint_id, 
    a.text_note, 
    b.photo_link, 
    c.audio_link 
FROM 
    text a 
LEFT OUTER JOIN image b ON a.complaint_id = b.complaint_id 
LEFT OUTER JOIN audio c ON a.complaint_id = c.complaint_id 

あなたのためにうまくいけば親指。おかげさまで

+0

を選択すると、a.complaint_id、a.text_note、nvl(b.photo_link、 '')、nvl(c.audio_link、 '')のテキストから左外部結合画像b がa.complaint_id = b.complaint_idにあります。 左外部結合オーディオc a.complaint_id = c.complaint_id nullの代わりに空白の値を表示する –

+0

"FUCTION .nvl not exist"を与える –

+0

@RushiKあなたはMySQLを使用しているので、IFNULL()がうまくいくと思います。ありがとう。 –

0
select t.Complaint_id,t.text_note,i.Photo_link,a.audio_link 
from text t 
left join image i on t.compalint_id=i.complaint_id 
left join audio a on t.compalint_id=a.complaint_id 
+0

どのように動作するか説明してください。 – nullpointer

関連する問題