X-PC 0 Denunciar post Postado Setembro 16, 2008 Olá, Preciso fazer um SELECT que selecione na tabela 'usuarios' a lista de 'id' dos canais que este usuario pode ver, depois selecione cada um destes ids na tabela 'canais' sempre que o status do canal for 1, sendo assim selecione na tabela 'streamings' a linha que for 'canal_id' igual ao 'id' do canal com status 1 e 'server_id' igual ao conteudo da coluna 'server_pref' do usuario em questao. Caso o status do streamings for 0 ou a coluna streaming for vazia ele tera que selecionar o streaming da tabela 'canais'. Ja tentei alguma coisa como os abaixo: $lscanais = "212,123,422,431,223"; //exemplo de ids SELECT cn.*, str.streaming FROM canais AS cn, streamings AS str WHERE cn.id IN ($lscanais) AND cn.status=1 SELECT cn.*, u.*, str.streaming AS StreamingPref FROM canais AS cn, usuarios AS u, streamings AS str WHERE (cn.status=1 AND cn.id IN ($lscanais)) OR (str.server_id=u.server_pref AND str.canal_id IN ($lscanais)) AND u.id='$usuario' SELECT canais.*, streamings.* FROM usuarios AS u, canais LEFT OUTER JOIN streamings ON streamings.canal_id IN ($lscanais) WHERE canais.status=1 AND canais.id IN ($lscanais) AND u.id='$usuario' Preciso que o valor do campo 'streaming' seja dinamico, quando existir uma entrada no BD para o canal_id igual ao id da tabela canais que esteja com status 1 e o server_id for igual ao server_pref do usuario, me retorne o valor streaming da tabela 'streamings', caso não exista uma entrada com canal_id solicitado ou o streamings.status for 0 ou ainda o campo streaming na tabela streamings for vazia, me retorne o valor streaming da tabela canais, que é o padrao. Não sei se deu pra entender, qualquer coisa só pedir eu explico melhor. To precisando muito disso ai, se alguem puder ajudar ficarei muito grato. desde ja agradeço. abs Compartilhar este post Link para o post Compartilhar em outros sites
X-PC 0 Denunciar post Postado Setembro 18, 2008 Bah, ninguém pra me responder, nem da uma luz, q vergonha. Mas não tem problema, agora consegui, e como sou bonzinho vou compartilhar com a comu, Consegui assim. $canais="SELECT cn.*, iStr.*, IF(iStr.streaming!='',iStr.streaming,cn.streaming) AS streaming FROM canais AS cn LEFT OUTER JOIN streamings AS iStr ON (cn.id=iStr.canal_id AND iStr.server_id='$_POST[server_pref]' AND iStr.status=1) WHERE cn.id IN ($scanais) AND cn.status=1";Assim ele seleciona todos os canais no array $scanais que forem ativos(status=1), e no FROM faz uma junção com a tabela com a lista de streamings quando o canal_id do streaming for igual ao id do canal e ainda quando este streaming for ativo. E o que mais me deu problema era bem simples, quando existir este streaming para o canal usar este, caso contrário, usar o original da tabela de canais. bom, abs Compartilhar este post Link para o post Compartilhar em outros sites