Ir para conteúdo

POWERED BY:

Arquivado

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

manoaj

selec em duas tabelas ao mesmo tempo

Recommended Posts

pessoal preciso fazer uma seleção em duas tabelas ao mesmo tempo pra exibir um conteudo .

 

logica:

 

tenho uma tabela telefones que tem tres colunas que são id_nome, telefone, nivel

 

e a outra tabela tem o nome de aprovados e nessa tabela tenho duas colunas que são id_um e id_dois.

 

primeira tabela:

 

id_nome: registra o id da pessoa que registrou o telefone.

telefone: telefone que a pessoa registrou.

nivel:é o nivel de permissão que serão aprovados e reprovados.

 

segunda tabela:

esta tabela registra arelação dos usuarios

id_um:id do usuario um que pode ser qualquer um

id_dois:id do usuario dois que pode ser qulquer um.

 

 

 

praciso selecionar e exibir os telefones que estiverem com o nivel aprovado e e preciso verificar a relação do usuario que postou esse telefone da seguinte maneira.

 

se o id do usuario logado estiver na segunda tabela junto com id do usuario que postou o telefone. E se o nivel do telefone for aprovado , eu quero que exiba todos os telefones que tem o nivel aprovado e que o id do usuario que postou tenha relação com usuario que ta logado .

 

 

como eu faria este select gente ? preciso muito disso :ermm:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer que no lugar do id do usuário apareça o nome do usuário, certo?

não mano o id ali é só uma forma de indentificar o usuario pode ser qualquer coisa desde que seja chave primaria o negocio é fazer aquele select ali em duas tabela spra verificar aquilo tudo antes de exibir tendeu?

 

eu não to achando um jeito de fazer aquelas verificações :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi certo não está tão complicado:

 

$id_usuario_logado = $_SESSION['id_usuario']; // Uma das formas que imaginei como você está recebendo o id do usuário logado
$sql = "SELECT * FROM tabela1 WHERE id_nome = ".$id_usuario_logado." AND nivel = 0"; // Estou levando em conta que 0 é o nível aprovado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi certo não está tão complicado:

 

$id_usuario_logado = $_SESSION['id_usuario']; // Uma das formas que imaginei como você está recebendo o id do usuário logado
$sql = "SELECT * FROM tabela1 WHERE id_nome = ".$id_usuario_logado." AND nivel = 0"; // Estou levando em conta que 0 é o nível aprovado

kkk achoq uevc não entendeu manin , você fez um select verificando se o registro na tabela é do usuario logado e se o nivel é aprovado .

 

mas eu preciso verificar se o nivel é aprovado e verificar tambem se o usuario logado tem relação com usuario que postou o telefone , ou seja preciso verificar todos os telefones que os usuarios registraram pra ver se tem o nivel aprovado e se esses usuarios tem relação com usuario logado , essa relação é verificada na segunda tabela , se os telefones tiverem o nivel aprovado e tiverem relação com o usuario logado, pode exibir todos os posts desse usuario que tema relação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então explique melhor isso:

 

segunda tabela:

esta tabela registra arelação dos usuarios

id_um:id do usuario um que pode ser qualquer um

id_dois:id do usuario dois que pode ser qulquer um.

 

O que seria id do usuario um que pode ser qualquer um e id do usuario dois, quem é usuário um e dois?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então explique melhor isso:

 

segunda tabela:

esta tabela registra arelação dos usuarios

id_um:id do usuario um que pode ser qualquer um

id_dois:id do usuario dois que pode ser qulquer um.

 

O que seria id do usuario um que pode ser qualquer um e id do usuario dois, quem é usuário um e dois?

olha só vo explicar essa tabela é o seguinte, ela registra a relação dos usuarios ou seja,

 

o usuario joão só tem relação com a usuario antonio se naquela segunda tabela tiver um registro com nome dos dois , porisso disse que o id do usuario um que pode ser qualquer um

 

pq tanto o usuario joao pode estar no id_um ou pode esta no id_dois e vice versa, ai eu preciso ver antes de exibir a noticia se o usuario logado que pode ser o joão, se ele tem relação com usuario que postou que pode ser o antonio , porisso a tabela que registra os telefones guarda quem postou o telefone pra poder ser verificado .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então acho que você está com problema de estrutura. Exporta essas duas tabelas e posta aqui.

 

 

tanela de relações

 

CREATE TABLE IF NOT EXISTS `aprovacoes` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`user_solicitou` text NOT NULL,

`user_recebeu` text NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

 

tabela com as postagens

 

CREATE TABLE IF NOT EXISTS `postagens` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`data_post` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

`postagem` text NOT NULL, aqui fica os telefones e informações que quiser postar a mais.

`username_post` varchar(355) NOT NULL, username ou id do usuario que postou

`nivel_post` enum('aprovado','reprovado') NOT NULL,

PRIMARY KEY (`id`),

KEY `rating` (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=84 ;

 

tanela de relações

 

CREATE TABLE IF NOT EXISTS `aprovacoes` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`user_sol` text NOT NULL,

`user_friend` text NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

 

tabela com as postagens

 

CREATE TABLE IF NOT EXISTS `postagens` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`data_post` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

`postagem` text NOT NULL, aqui fica os telefones e informações que quiser postar a mais.

`username_post` varchar(355) NOT NULL, username ou id do usuario que postou

`nivel_post` enum('aprovado','reprovado') NOT NULL,

PRIMARY KEY (`id`),

KEY `rating` (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=84 ;

 

 

olhem eu fiz assim ate que funciona só que só verifica a primeira postagem , se tiver mais uma postagem depois da primeira e tenha sido o mesmo usuario que postou ou tenha sido outro usuario mas que tenha relação com usuario logado não verifica pq o select só ta verificando o primeiro registro da tabela postagens

 

<?php   
   $verify_q_post = mysql_query("SELECT *  FROM postagens WHERE nivel_post='aprovado'")or die(mysql_error());
   $exibir_q_post = mysql_fetch_array($verify_q_post);

   $user_q_post   = $exibir_q_post['username_post'];


   $amizade_verify = mysql_query("SELECT *  FROM postagens, aprovacoes WHERE postagens.nivel_post='aprovado' AND aprovacoes.user_sol='$username_user'  AND aprovacoes.user_friend='$user_q_post' OR aprovacoes.user_sol='$user_q_post' AND aprovacoes.user_friend='$username_user'")or die(mysql_error());
   $exibir_post    = mysql_fetch_array($amizade_verify);

echo $exibir_post['postagem'];[color="#FF0000"] se eu fizer um while nesse segundo select exibe todas a postagens e não só as que estão dentro da condição WHERE imposta no select
[/color]
?>

 

 

LEGENDA

($username_user) usuario logado

($user_q_post) usuarioque postou anoticia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... Acho que o problema está aqui:

 

`user_solicitou` text NOT NULL, Seria interessante este campo ser int, para cadastrar o id do usuario

`user_recebeu` text NOT NULL, Seria interessante este campo ser int, para cadastrar o id do usuario

`username_post` varchar(355) Seria interessante este campo ser int, para cadastrar o id do usuario

 

E faltou na segunda tabela o id para relacionar com a primeira, tipo: id_aprovacoes. Com ele você faz o inner join.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... Acho que o problema está aqui:

 

`user_solicitou` text NOT NULL, Seria interessante este campo ser int, para cadastrar o id do usuario

`user_recebeu` text NOT NULL, Seria interessante este campo ser int, para cadastrar o id do usuario

`username_post` varchar(355) Seria interessante este campo ser int, para cadastrar o id do usuario

 

E faltou na segunda tabela o id para relacionar com a primeira, tipo: id_aprovacoes. Com ele você faz o inner join.

pode montar um codigo pra mim ver melhor como seria essa sua logica com inner join e o novo campo id_aprovacoes

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tabela postagens tem que ser relacionada com a tabela aprovações. Isso é feito através de id. Exemplo:

 

SELECT * FROM galerias INNER JOIN galerias_imagens ON galerias.id_galerias = galerias_imagens.id_galerias

 

No exemplo acima as duas tabelas tem o id_galerias, na tabela galeria esse id é o id de cadastro da galeria. E tabela imagens, cada imagem cadastrada que corresponder a galeria cadastrada vai receber o id da galeria correspondente, tipo:

id_galerias_imagens = Recebe o id da imagem cadastrada

id_galerias = Recebe o id da galeria (aqui que relaciona a tabela galerias_imagens com a tabela galerias)

imagens = Recebe o nome da imagem

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tabela postagens tem que ser relacionada com a tabela aprovações. Isso é feito através de id. Exemplo:

 

SELECT * FROM galerias INNER JOIN galerias_imagens ON galerias.id_galerias = galerias_imagens.id_galerias

 

No exemplo acima as duas tabelas tem o id_galerias, na tabela galeria esse id é o id de cadastro da galeria. E tabela imagens, cada imagem cadastrada que corresponder a galeria cadastrada vai receber o id da galeria correspondente, tipo:

id_galerias_imagens = Recebe o id da imagem cadastrada

id_galerias = Recebe o id da galeria (aqui que relaciona a tabela galerias_imagens com a tabela galerias)

imagens = Recebe o nome da imagem

 

 

mas tipo , na tabela aprovacoes os regsitros com os ids de um mesmo usuario vão se repetir da seguinte forma

 

joao tem o id = 1

maria tem o id = 2

e marcos tem o id =3

 

registros na tabela aprovacoes vão ficar

 

1,2

1,3

ou podem ficar

2,1

3,1

 

mas das duas maneiras o usuario joao teria relação com maria e marcos, o problema é esse eu não posso por uma chave de resgitro unica ai tipo o do exemplo que você deu id_galerias pq se eu fizer isso não teria como relacionar coma outra tabela pq seria diferente entende.

 

então ou eu crio um novo sistema de amizade pra relacionar os usuarios(acho que não adiantaria muito)

ou eu tento achar um jeito de verificar se o usuario que fez as postagens tem amizedo com usuario logado e o nivel da postagem é aprovado , se o usuario que postou for amigo do usuario logado e a postagem tiver o nivel aprovado eu exibo todas as postagens desse usuario e de outros que se encaxem nesse padrão de verificação.

 

nossa cara o coisinha complicada essa kkkkkkkkkkkkkk :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais é por isso que tem duas tabelas, veja:

 

galeria

-id(1)

-titulo(Titulo da Primeira Galeria)

__________

-id(2)

-titulo(Titulo da Segunda Galeria)

 

galeria_imagens

-id(1)

-id_galeria(1)

-imagens(1.jpg)

__________

-id(2)

-id_galeria(1)

-imagens(2.jpg)

__________

-id(3)

-id_galeria(2)

-imagens(3.jpg)

 

Ai a query abaixo vai mostrar só os dois primeiros registros da tabela galeria_imagens, porque passei id_galeria 1

SELECT * FROM galerias INNER JOIN galerias_imagens ON galerias.id_galerias = galerias_imagens.id_galerias WHERE galerias.id_galerias = 1

 

Com essa forma que você está fazendo (1,2 - 1,3) vai te dar mais trabalho, porque vai ter que usar explode na virgula e transformar em array os valores, para enfim fazer a busca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais é por isso que tem duas tabelas, veja:

 

galeria

-id(1)

-titulo(Titulo da Primeira Galeria)

__________

-id(2)

-titulo(Titulo da Segunda Galeria)

 

galeria_imagens

-id(1)

-id_galeria(1)

-imagens(1.jpg)

__________

-id(2)

-id_galeria(1)

-imagens(2.jpg)

__________

-id(3)

-id_galeria(2)

-imagens(3.jpg)

 

Ai a query abaixo vai mostrar só os dois primeiros registros da tabela galeria_imagens, porque passei id_galeria 1

SELECT * FROM galerias INNER JOIN galerias_imagens ON galerias.id_galerias = galerias_imagens.id_galerias WHERE galerias.id_galerias = 1

 

Com essa forma que você está fazendo (1,2 - 1,3) vai te dar mais trabalho, porque vai ter que usar explode na virgula e transformar em array os valores, para enfim fazer a busca.

 

sim mas eu preciso criar um sitema de relação entre eles , acho que essa forma que to fazendo seria a mais simples ceio eu vo ter que achar um jeito cara

 

tipo colocando por outro lado parece ate mais facil só continuo sem direção penssei nessa quetão do array pq olha esse outro lado.

 

 

(vejo quem tem relação com usuario logado na tabela aprovacoes , e seleciono todos que tem relação com ele, e depois pego todas as postagens de quem tem relação com ele e exibo quando o nivel dessas postagens for aprovado.)

parece mais facil quando colocado dessa maneira kkk bom pelo menos para se entender :ermm:/>

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.