2012-01-13 11 views
1

この問題は、複数のテーブルからデータを取り出す方法がわかりません。 INNER JOINとUNIONを使用しようとしました。SQLクエリ。複数のテーブルに関連付けられています

select `name_ganre` from `teleprogram`.`ganres` 
where `idganre`=any(select `idganre` from `teleprogram`.`ganre-transfer` 
where `idtransfer`=any(select `idtransfer` from `teleprogram`.`broadcasting`)); 

select `name_channel` from `teleprogram`.`channel` 
where `idchannel`= any(select `idchannel` from `teleprogram`.`broadcasting`); 

私は、チャネルの1人の列名に持参する必要があります。 は、ここに私はこれまで来たものです。そしてそのジャンルの別の名前。

broadcasting 
rows: idtransfer, idchannel 

transfer 
rows: idtransfer, name_transfer 

ganre-transfer 
rows: idganre, idtransfer 

ganre 
rows: idganre, name_ganre 

channels 
rows: idchannel, name_channel 

私は放送を通じてデータを取得しようとしています。簡素化できますか? クエリの後:name_channel、name_ganre

ありがとうございます!

+0

どのテーブルが「メイン」(または「親」)テーブルですか?メインテーブルの各行には、他のすべてのテーブルに常に一致する行がありますか? – Bohemian

+0

各チャンネルに複数のジャンルを割り当てることができるため、一部のチャンネルでは複数の行が表示されます(チャンネルごとに1つのジャンルごとに1行)。 –

+0

@Bohemian:親子関係ではなく、多対多の関係があります。 –

答えて

1

あなたが必要とするクエリはこれです:

select c.name_channel, g.name_ganre 
from channels c 
inner join broadcasting b on b.idchannel = c.idchannel 
inner join ganre-transfer gt on gt.idtransfer = b.idtransfer 
inner join ganre g on g.idganre = gt.idganre 

あなたはINNER JOINHEREをどのように機能するかを見ることができます!

+1

@ MarkBannisterありがとうm8 :) –

+0

ありがとうございました!それはすべきです!とてもありがたい! – Feor

関連する問題