Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta a base de datos

Estas en el tema de Consulta a base de datos en el foro de Mysql en Foros del Web. hola chicos tengo un inconveniente. estuve investigando y no encuentro información al respecto Tengo una tabla con la siguiente estructura: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver ...
  #1 (permalink)  
Antiguo 05/06/2013, 22:49
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Consulta a base de datos

hola chicos tengo un inconveniente.

estuve investigando y no encuentro información al respecto

Tengo una tabla con la siguiente estructura:

Código MySQL:
Ver original
  1. DROP TABLE IF EXISTS `no_comentario`;
  2. CREATE TABLE IF NOT EXISTS `no_comentario` (
  3.   `com_ID` int(10) NOT NULL, -- ID del comentario no es auto incrementa
  4.   `not_ID` int(10) NOT NULL, -- ID de la noticia Asociada
  5.   `com_conse` int(10) NOT NULL, -- numero de Consecutivo
  6.   `idAutorCom` int(10) NOT NULL,
  7.   `comAutor` varchar(50) NOT NULL,
  8.   `comFecha` datetime NOT NULL,
  9.   `comEvalpro` int(10) NOT NULL,
  10.   `comEvalcon` int(10) NOT NULL,
  11.   `comtext` varchar(450) NOT NULL,
  12.   PRIMARY KEY (`com_ID`)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

esta tabla es para guardar los comentarios de un sistema de noticias:
pero no se como hacer la relacion entre esta y la tabla de noticias:

explico los campos

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 y mostrarla por pantalla el detalle es que para cada noticia existen comentario entonces esta de debe poder repetir
noticia 1 com 1.2.3.4.5
noticia 2 com 1.2.3.4.5.6

algun aporte para solventar el sistema de comentarios???
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #2 (permalink)  
Antiguo 06/06/2013, 01:57
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.

Etiquetas: campo, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:15.