Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

X-PC

SELECT 2 tabelas e retornar dado que existe em ambas

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.