2012-01-13 4 views
1

En raison de ce problème, je ne sais pas comment extraire des données de plusieurs tables. J'ai essayé d'utiliser INNER JOIN et UNION. Voici ce que je suis venu jusqu'à présent:requête sql. Associé à plusieurs tables

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`); 

que je dois apporter à un nom de colonne du canal. Et un autre nom pour le genre. J'essaye d'obtenir les données par la diffusion. Peut être simplifié? Après la requête: name_channel, name_ganre

Merci!

+0

Quelle table est la table "principale" (ou "parent")? Y a-t-il toujours des lignes correspondantes dans toutes les autres tables pour chaque ligne de la table principale? – Bohemian

+0

Notez que parce que vous pouvez avoir plusieurs genres pour chaque canal, vous obtiendrez probablement plusieurs lignes pour certaines chaînes (une ligne par canal, par genre). –

+0

@Bohemian: Il y a une relation plusieurs-à-plusieurs ici, pas une relation parent-enfant. –

Répondre

1

La requête que vous avez besoin est la suivante:

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 

Vous pouvez voir comment fonctionne INNER JOINHERE!

+1

@MarkBannister merci m8 :) –

+0

Merci beaucoup! fonctionne comme il se doit! très reconnaissant! – Feor