Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) SELECT 2 tabelas e retornar dado que existe em ambas


Guest X-PC

Pergunta

Olá,

Já pesquisei mas não sei nem como posso chamar algo assim.

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'.

já 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 padrão.

Não sei se deu pra entender, qualquer coisa só pedir eu explico melhor.

To precisando muito disso ai, se alguém puder ajudar ficarei muito grato.

desde já agradeço.

abs

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Eu tentei, mas não sei se soube aplicar corretamente.

Mas o maior problema é que preciso fazer algumas condicoes. Ex. Caso exita em streamings o canal_id igual ao id do canal solicitado ele somete ira mostrar se estiver com status 1, caso contrario exiba o campo streaming da tabela canal e não da tabela streamings.

Link para o comentário
Compartilhar em outros sites

  • 0

Mas você pode fazer condições no MySQL......usando as funções IF, CASE WHEN..... dá uma olhada nelas no manual do MySQL

Não soube aplicar corretamente o uso do JOIN? Dá uma olhada no manual do MySQL denovo..... tem tudo explicadinho..... se mesmo assim não tiver conseguindo, posta aí sua QUERY pro pessoal dar uma olhada....

Editado por Andréa Carvalho
Link para o comentário
Compartilhar em outros sites

  • 0

Aee,

Consegui assim, bom até agora to fazendo testes, se achar algum erro favor me avisem. heh

$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.

Ah, e uma músiquinha ajuda viu, só de dica.

bom, abs e muito obrigado Andréa Carvalho

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...