Ir para conteúdo

POWERED BY:

Arquivado

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

marcosalmeida

Relacionamento entre Tabelas

Recommended Posts

Olá pessoal,

Estou com um problema de relacionamento entre duas tabelas. Antes usava o Access e era moleza, migrei para o MySQL e estou com dificuldade.

 

Quando tento consultar uma tabela com campo relacionado da erro de tabela inexistente. Abaixo o schema das tabelas

 

TabelaCategoria

Id

Nome

 

TabelaNoticias

Id

Id_Categoria

Titulo

Texto

 

A (id_categoria) recebe o valor id da CATEGORIA automaticamente ao cadastrar uma noticia ou editar.

Pelo que andei lendo teria de criar uma TRIGGER, mas não sei como fazer.

 

Alguem poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcos boa tarde.

 

Mostre aqui como você fez a consulta.

Um exemplo, vamos supor que você queira buscar uma notícia X com o nome da categoria onde ela está associada:

 

SELECT n.Id, n.Titulo, n.Texto, c.Nome
FROM TabelaNoticias n, TabelaCategoria c
WHERE
     n.Id_Categoria = c.Id and
     n.id = 15;

Nessa query eu busco as informações da notícia com o ID 15 relacionado o nome da categoria na TabelaCategoria.

Não é preciso utilizar trigger, leia no help o que é uma trigger.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou usando este SELECT mas está dando erro. tblCategoria inexistente.

 

Set rsNoticias = Server.CreateObject("ADODB.Recordset")
rsNoticias.ActiveConnection = CONECXAO_STRING
rsNoticias.Source = "SELECT id_noticia, dsc_categoria, dsc_titulo_noticia, dt_publicacao_noticia, id_categoria_noticia  FROM tblNoticias, tblCategoria  WHERE tblCategoria.id_categoria = id_categoria_noticia  ORDER BY dsc_categoria ASC, dt_publicacao_noticia DESC"
rsNoticias.CursorType = 0
rsNoticias.CursorLocation = 3
rsNoticias.LockType = 1
rsNoticias.Open()

No banco Access este select está funcionando, o que pode ser? A conecxão está correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

marcos, da um

'show table status'
e me fala o que retorna por favor

 

 

Name  Engine  Version  Row_format  Rows  Avg_row_length  Data_length  Max_data_length  Index_length  Data_free  Auto_increment  Create_time  Update_time  Check_time  Collation  Checksum  Create_options  Comment  
TblCategoria MyISAM 10 Dynamic 35 55 1936 281474976710655 2048 0 73 2010-10-09 22:42:07 2010-10-09 22:42:32 2010-10-09 23:25:19 latin1_bin NULL     
TblUsuario MyISAM 10 Dynamic 2 42 196 281474976710655 4096 112 20 2010-10-09 22:36:13 2010-10-10 20:53:15 2010-10-10 00:11:24 latin1_general_ci NULL     
tblNoticias MyISAM 10 Dynamic 7659 3555 27230100 281474976710655 386048 0 8307 2010-10-09 22:54:25 2010-10-09 23:24:59 2010-10-10 00:11:24 latin1_general_ci NULL     


Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem de Erro é a seguinte:

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e37'
[MySQL][ODBC 5.1 Driver][mysqld-5.0.87.d10-ourdelta-log]Table [color="#FF0000"]'dominio[/color].tblCategoria' doesn't exist

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra tentar falicilitar o entendimento do meu problema...

Com este seletc está funcionando, porém nao está agrupando as noticias por categorias

SELECT id_noticia, dsc_titulo_noticia, dt_publicacao_noticia, id_categoria_noticia
FROM tblNoticias
WHERE tblNoticias.id_categoria_noticia
ORDER BY dsc_titulo_noticia ASC , dt_publicacao_noticia DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

marcos almeida, Vi que suas tabelas estão com a engine MyISAM. Esse tipo não suporta chaves estrangeiras, portanto, faça o seguinte:

 

- mude pra InnoDB
- Crie o relacionamento entre as tabelas e tente executar seu select novamente.

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.