sql查询。与多个表关联
有了这个问题,我不知道如何从多个表中提取数据。我尝试使用内部联接和并集。 以下是我到目前为止所做的:sql查询。与多个表关联,sql,database,Sql,Database,有了这个问题,我不知道如何从多个表中提取数据。我尝试使用内部联接和并集。 以下是我到目前为止所做的: 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_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`);
我需要输入一个频道的列名。这一流派的另一个名字
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\u channel,name\u ganre
谢谢大家! 您需要的查询是:
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
您可以看到
内部联接的工作原理 您需要的查询是:
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
您可以看到内部联接的工作原理 哪个表是“主”(或“父”)表?主表中的每一行在所有其他表中总是有匹配的行吗?请注意,因为每个频道可以有多个类型,所以某些频道可能会有多行(每个频道一行,每个类型)。@Bohemian:这里有多对多关系,而不是父子关系。哪个表是“主”(或“父”)表?主表中的每一行在所有其他表中总是有匹配的行吗?请注意,因为每个频道可以有多个类型,所以某些频道可能会有多行(每个频道一行,每个类型)。@Bohemian:这里有多对多关系,而不是父子关系。