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

group by having

Estas en el tema de group by having en el foro de SQL Server en Foros del Web. $orden="SELECT p.id, p.titulo, p.descripcion, p.precio, i.imagenes FROM propiedades p, imagenes i, propiedades_imagenes pi WHERE p.id=pi.id_propiedades and i.id=pi.id_imagenes GROUP BY p.id HAVING i.id=MIN(i.id)"; Con la consulta ...
  #1 (permalink)  
Antiguo 28/05/2012, 10:32
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 13 años, 11 meses
Puntos: 2
group by having

$orden="SELECT p.id, p.titulo, p.descripcion, p.precio, i.imagenes FROM propiedades p, imagenes i, propiedades_imagenes pi WHERE p.id=pi.id_propiedades and i.id=pi.id_imagenes GROUP BY p.id HAVING i.id=MIN(i.id)";


Con la consulta de arriba me pone el siguiente error:

2Unknown column 'i.id' in 'having clause'

Si alguine me puede dar una mano con esto!
Saludos!
  #2 (permalink)  
Antiguo 28/05/2012, 10:40
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: group by having

Primero, deberias utilizar INNER JOIN y no unir tus tablas con el WHERE

SELECT p.id, p.titulo, p.descripcion, p.precio, i.imagenes
FROM propiedades p inner join imagenes i on p.id = pi.id_propiedades
inner join propiedades_imagenes pi on p.id = pi.id_propiedades and i.id = pi.id_imagenes

Segundo, de donde sacas un GROUP BY, si no estas haciendo operaciones de suma, count, o algo por el estilo....
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 28/05/2012, 10:42
Avatar de ingelenalopez  
Fecha de Ingreso: mayo-2012
Ubicación: Santo Domingo, Dominican Republic
Mensajes: 12
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: group by having

Debería ser así:

SELECT Min(p.id) as id, p.titulo, p.descripcion, p.precio, i.imagenes
FROM propiedades p, imagenes i, propiedades_imagenes pi
WHERE p.id = pi.id_propiedades
and i.id = pi.id_imagenes
GROUP BY p.titulo, p.descripcion, p.precio, i.imagenes
  #4 (permalink)  
Antiguo 28/05/2012, 10:43
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: group by having

Claro lo que quiero es seleccionar una imagen sola ya que tengo varias que corresponden a una propiedad.
  #5 (permalink)  
Antiguo 28/05/2012, 10:53
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: group by having

¿Y el HAVING?, Deberias colocar un poco de tus datos y lo que deseas obtener
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 28/05/2012, 10:56
Avatar de ingelenalopez  
Fecha de Ingreso: mayo-2012
Ubicación: Santo Domingo, Dominican Republic
Mensajes: 12
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: group by having

Por esta parte HAVING i.id=MIN(i.id) deduje que lo que quiere es el Id con el valor mínimo.
  #7 (permalink)  
Antiguo 28/05/2012, 11:07
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: group by having

Gracias!
Me funciono barbaro sin el group by también funciono!.
Saludos!
  #8 (permalink)  
Antiguo 28/05/2012, 11:12
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: group by having

ingelenalopez

Es que a mi eso de la "ADIVINANZA" no lo domino muy bien......

Saludos
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 28/05/2012, 11:32
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: group by having

Ahora me surge otro problema

Agrego esto: p.tipo='2'

p.tipo vale 2 en este caso pero en ese campo el valor es 1 no 2 o sea me tiene que dar NULL
Si embargo me aparece una imagen vacia.




12SELECT Min(p.id) as id, p.titulo, p.descripcion, p.precio, i.imagenes FROM propiedades p, imagenes i, propiedades_imagenes pi, tipo t WHERE p.id = pi.id_propiedades and p.tipo='2' and i.id = pi.id_imagenes and p.transaccion='1'


Código PHP:
Ver original
  1. if ($dato!=NULL){
  2.     while($dato!=NULL){
  3.         $imagen=$dato["imagenes"];
  4.         $descripcion=$dato["descripcion"];
  5.         $titulo=$dato["titulo"];
  6.         $precio=$dato["precio"];
  7.        
  8.        
  9.         echo "<div class='caja-propiedad'><a href='ampliar.php?transaccion=$transaccion'><img src='../_admin/$imagen' width='140px' /><br />$titulo<br />$descripcion<br />$precio</a></div>";
  10.         $dato=mysql_fetch_array($rs);
  11.     }
  12.     }else{
  13.     echo "No hay datos para mostrar";
  14.     }
  #10 (permalink)  
Antiguo 28/05/2012, 20:59
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: group by having

Este es un caso para INGELENALOPEZ
__________________
MCTS Isaias Islas
  #11 (permalink)  
Antiguo 29/05/2012, 10:13
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, 8 meses
Puntos: 774
Respuesta: group by having

amigo porque no usas un inner join on un left join en tu query? al parecer como estas haciendo un producto cartesiano entre tus tablas te traes datos que no corresponden a tu clausula en el where, podrias probar tambien en tu where un and campo_a buscar is not null

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: group, select
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 08:03.