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

cuenta pero no todo

Estas en el tema de cuenta pero no todo en el foro de SQL Server en Foros del Web. Buen dia les cuento que estoy tratando de armar una web de tipo autoayuda donde el usuario de cualquier provincia de la argentina va a ...
  #1 (permalink)  
Antiguo 12/12/2011, 10:27
 
Fecha de Ingreso: diciembre-2011
Mensajes: 26
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta cuenta pero no todo

Buen dia les cuento que estoy tratando de armar una web de tipo autoayuda donde el usuario de cualquier provincia de la argentina va a poder publicar sus problemas y la gente podra comentarlos.
Cuando un problema se solucione pasara al estado "resuelto" mientras tanto esta en estado "sin resolver" esa es la idea. Ya arme la base de datos lo que necesito es que en la pagina principal se muestren todos los problemas "sin resolver", el titulo del problema, el detalle del problema, la fecha del problema, la cantidad de comentarios que tiene ese problema, el ultimo comentario registrado y que si no tiene comentarios tambien se vean.
Etuve probando muchas consultas SQL de las cuales la que mas se hacerca es esta que pongo abajo me agrupa por titulo del problema y me cuenta la cantidad de comentarios pero no me muestra los problemas que no tienen comentarios lo cual no me sirve les dejo la estructura de la base cualquier consejo ayuda o comentario les estare muy agradecido un saludo.

CREATE DATABASE dbprob
USE dbprob
CREATE TABLE usuario (
idusuario int(6) NOT NULL AUTO_INCREMENT,
mailus varchar(30) NOT NULL,
nombre varchar(20) DEFAULT NULL,
apellido varchar(20) DEFAULT NULL,
PRIMARY KEY (idusuario));
CREATE TABLE comentario (
idcomentus int(6) NOT NULL AUTO_INCREMENT,
fecha datetime NOT NULL,
coment text NOT NULL,
idprob int(6) NOT NULL,
PRIMARY KEY (idcomentus));
CREATE TABLE estado (
idestadoprob int(2) NOT NULL AUTO_INCREMENT,
estadoprob varchar(25) NOT NULL,
PRIMARY KEY (idestadoprob));
CREATE TABLE provincia (
idprovincia int(3) NOT NULL AUTO_INCREMENT,
provincia varchar(25) NOT NULL,
PRIMARY KEY (idprovincia));
CREATE TABLE tituloprob (
idtituloprob int(6) NOT NULL AUTO_INCREMENT,
tituloprob varchar(25) NOT NULL,
PRIMARY KEY (idtituloprob));
CREATE TABLE prob (
idprob int(6) NOT NULL AUTO_INCREMENT,
prob text NOT NULL,
fechaprob datetime NOT NULL,
idusuario int(6) NOT NULL,
idprovincia int(3) NOT NULL,
idtituloprob int(6) NOT NULL,
idestadoprob int(2) NOT NULL,
PRIMARY KEY (idprob));

select tituloprob.tituloprob, tituloprob.idtituloprob,
prob.prob, prob.idprob, prob.fechaprob,
comentario.fecha, comentario.coment, comentario.idprob, comentario.idcomentus,
prob.idestadoprob, prob.idprovincia,
count(*) as cantcoment
from tituloprob, prob, comentario
where
prob.idtituloprob = tituloprob.idtituloprob and
comentario.idprob = prob.idprob and
prob.idestadoprob = '1' and
prob.idprovincia = '1'
group by prob.idtituloprob
order by prob.idprob desc

// prob.idestadoprob = '1' (sin resolver)
// prob.idprovincia = '1' (tucuman)
  #2 (permalink)  
Antiguo 13/12/2011, 08:34
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: cuenta pero no todo

usa left join en tu query :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 13/12/2011, 13:49
 
Fecha de Ingreso: diciembre-2011
Mensajes: 26
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: cuenta pero no todo

Gracias Libras! estuve probando con left join y con esto:

SELECT prob.*, COUNT(prob.idprob) AS total_com
FROM prob
LEFT JOIN comentario
ON prob.idprob=comentario.idprob
GROUP BY prob.idprob

me salen todos los problemas, me cuenta los comentarios de cada problema pero en los comentarios que no tienen problema sale 1 y yo necesito que salga 0 o null de lo contrario cuando muestre en la pagina me va a decir que tal problema tiene un comentario y no es asi muchas gracias nuevamente

Etiquetas: count, registros, select, tablas, resultados
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 09:58.