Ir para conteúdo

POWERED BY:

Arquivado

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

MARCOSOFTHARD

[Resolvido] Consulta em 2 tabelas

Recommended Posts

Ola, tenho 3 tabelas no mysql

 

comunidade
com_id
com_titulo

usuário
usu_id
usu_nome

participa
par_id
par_usuid
par_comid

Quero exibir todas as comunidade, porém quero pegar também se o usuário é daquela comunidade ou não

 

Exemplo de exibição

 

Comunidade: São Paulo
Já sou membro

Comunidade: Chocolate
Quero se membro

Comunidade: Pizza
Já sou membro

Como posso fazer isso no MySQL e PHP?

Eu sei que posso criar um outro sql dentro do loop que exibi os dados, mais quero fazer tudo em um único sql para melhorar o desempenho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então exporte a estrutura das tabelas e poste o sql de criação aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce pode usar o LEFT JOIN para fazer isso, concatenando as tabelas nescessárias... ou voce pode criar uma FK (Foreign Key - Chave estrangeira) para fazer as buscas nas tabelas mais rapidamente e precisas sem o uso do JOIN... lembrando que para fazer FK voce precisa estruturar suas tabelas em InnoDB para que funcione!

 

se voce puder postar a estrutura do SQL como o nosso amigo Willian Bruno disse, ajudaria muito a construir esta query!

 

abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE TABLE chezprefere (
  cpre_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  cpre_admid INTEGER UNSIGNED NOT NULL,
  cpre_titulo VARCHAR(60) NULL,
  cpre_descricao TEXT NULL,
  cpre_texto TEXT NULL,
  cpre_horario TEXT NULL,
  cpre_formapgt TEXT NULL,
  cpre_tipocomida TEXT NULL,
  cpre_logotipo VARCHAR(50) NULL,
  cpre_endereco VARCHAR(50) NULL,
  cpre_numero VARCHAR(5) NULL,
  cpre_bairro VARCHAR(50) NULL,
  cpre_cidade VARCHAR(30) NULL,
  cpre_estado VARCHAR(2) NULL,
  cpre_cep VARCHAR(9) NULL,
  cpre_pais VARCHAR(40) NULL,
  cpre_status INTEGER(1) UNSIGNED NULL DEFAULT 1,
  cpre_tipo INTEGER(1) UNSIGNED NULL,
  cpre_contato VARCHAR(150) NULL,
  cpre_site VARCHAR(50) NULL,
  cpre_manobrista VARCHAR(50) NULL,
  cpre_lugares INT(4) NULL,
  cpre_rolha INT(5) NULL,
  cpre_outros TEXT NULL,
  cpre_imagemho VARCHAR(50) NULL,
  cpre_imagemho2 VARCHAR(50) NULL,
  cpre_imagemve VARCHAR(50) NULL,
  cpre_home INTEGER(1) UNSIGNED NULL,
  cpre_publicacao DATE NULL,
  PRIMARY KEY(cpre_id),
  INDEX chezprefere_FKIndex2(cpre_admid)
);

CREATE TABLE usuariofa (
  usf_cpreid INTEGER UNSIGNED NOT NULL,
  usf_usuid INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY(usf_cpreid, usf_usuid),
  INDEX chezprefere_has_usuarios_FKIndex1(usf_cpreid),
  INDEX chezprefere_has_usuarios_FKIndex2(usf_usuid)
);

CREATE TABLE usuarios (
  usu_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  usu_nome VARCHAR(50) NULL,
  usu_email VARCHAR(150) NULL,
  usu_senha VARCHAR(30) NULL,
  usu_imagem VARCHAR(50) NULL,
  usu_nascimento DATE NULL,
  usu_estado VARCHAR(2) NULL,
  PRIMARY KEY(usu_id)
);

 

E aqui é a imagem da página que estou fazendo

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa um left Join...

 

Select comunidade.com_titulo, IF( usuario.usu_id IS NULL, 'Quero ser membro', 'Já sou membro' ) as membro

From comunidade

Left Join participa ON participa.par_comid = comunidade.com_id

Left Join usuario ON participa.par_usuid = usuario.usu_id

WHERE usuario.usu_id = 'CODIGO DO TEU USUARIO'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, fiz mais deu erro de execução

 

Select chezprefere.cpre_id, chezprefere.cpre_titulo, usuariofa.usf_usuid
From chezprefere
Left Join usuariofa ON usuariofa.usf_cpreid = usuario.cpre_id
Left Join usuario ON usuariofa.usf_usuid = usuario.usu_id
WHERE usuario.usu_id = $usu_id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, fiz funcionar, obrigado pela ajuda, agora esta funcionando, este meu add é em jquery e faltava só isso para finalizar, obrigado.

 

Select *
From chezprefere
Left Join usuariofa ON usuariofa.usf_usuid = $usu_id and usuariofa.usf_cpreid = chezprefere.cpre_id    
 where cpre_tipo = 1

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.