Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/06/2013, 01:57
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta a base de datos

Cita:
com_ID es el ID del comentario, mi idea era que este no se auto incrementara pero que fuera el primari key... para luego hacer una busqueda de todas las row que pertenecen al mismo
Aqui puedes tener un grave error de conceptos .... la PK debe ser única sea o no auto incremental.

no_comentario
`com_ID` INT(10) AUTOINC NOT NULL PK
`not_ID` INT(10) NOT NULL, FK referenciando Noticias
`idAutorCom` INT(10) NOT NULL,FK referenciando Autores
`comFecha` DATETIME NOT NULL,
`comEvalpro` INT(10) NOT NULL,
`comEvalcon` INT(10) NOT NULL,
`comtext` VARCHAR(450) NOT NULL,


Campos innecesarios
`com_conse` INT(10) NOT NULL, -- numero de Consecutivo
Ordenando por `comFecha` DATETIME puedes mostrar un numerador correlativo sin necesidad de guardarlo en la tabla

`comAutor` VARCHAR(50) NOT NULL, ya tienes el id del autor

Noticias
`not_ID` INT(10) AUTOINC NOT NULL, PK
noticia,
fechaNot DATETIME NOT NULL,
...etc....

Autores
idAutor` INT(10) AUTOINC NOT NULL, PK
Autor,
...etc...

Deberías usar el motor InnoDB ya que MyISAM no permite las FK.

Luego la consulta

Código MySQL:
Ver original
  1. SELECT c.*,n.*,a.*
  2. FROM (no_comentario c INNER JOIN Noticias n ON c.not_ID=n.not_ID)
  3.            INNER JOIN Autores a ON a.idAutor=c.idAutorCom
  4. WHERE n.not_ID=X
  5. ORDER BY c.comFecha

Esto dara todos los campos de las tres tablas para la noticia X.

El numerador correlativo lo puedes generar en el bucle de impresion con programación externa.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.