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

Bloqueado con una consulta SELECT sencilla

Estas en el tema de Bloqueado con una consulta SELECT sencilla en el foro de Mysql en Foros del Web. Buenas tardes, llevo unas horas bloqueado con una consulta SELECT y no doy con la clave, sé que es sencilla, al menos, eso creo, pero ...
  #1 (permalink)  
Antiguo 27/07/2008, 05:50
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Bloqueado con una consulta SELECT sencilla

Buenas tardes, llevo unas horas bloqueado con una consulta SELECT y no doy con la clave, sé que es sencilla, al menos, eso creo, pero no consigo la consulta exacta.
El problema es este:
Tengo dos tablas, una tbl_categorias y otra tbl_ofertas, estan relacionadas con el id de tbl_categorias a num_id de tbl_ofertas, quiero hacer un select de tbl_categorias que tengan al menos una oferta relacionada con esa categoria.

Cualquier sugerencia sera bienvenida
  #2 (permalink)  
Antiguo 27/07/2008, 09:50
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Bloqueado con una consulta SELECT sencilla

Si no pones el SELECT, cómo vamos a poder orientarte?

OJO, al decir SELECT, que sea una sentencia SQL pura y NO variables o código de programación.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 27/07/2008, 10:35
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Bloqueado con una consulta SELECT sencilla

Cita:
Iniciado por BrujoNic Ver Mensaje
Si no pones el SELECT, cómo vamos a poder orientarte?

OJO, al decir SELECT, que sea una sentencia SQL pura y NO variables o código de programación.
Tienes razon, se me fue la pinza, despues de hacer mil y una pruebas, ya no se ni cual poner, pongo esta:
SELECT tbl_categorias.* FROM tbl_categorias INNER JOIN tbl_ofertas ON tbl_categorias.id=tbl_ofertas.categoria;
que es la que me ha devuelto un resultado lo mas proximo posible, ya que me devuelve las categorias que tienen ofertas, pero claro, si hay varias ofertas en una misma categoria, pues se repite los resultados.

Saludos y gracias por las molestias :)
  #4 (permalink)  
Antiguo 27/07/2008, 12:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Bloqueado con una consulta SELECT sencilla

Para poder hacer discriminaciones o evitar las repeticiones no debes usar el *, eso no permite realizar un acotamiento de lo que muestra. En esos casos tienes forzosamente que poner qué campos quieres mostrar, sin lo cual no se puede hacer selecciones por DISTINCT ni hacer agrupamientos (GROUP BY), que podrías eliminar los registros de más.
Si vas a mostrar TODOS los campos, entonces enumeralos a TODOS, pero un DISTINCT no va a funcionar así.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/07/2008, 13:06
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Bloqueado con una consulta SELECT sencilla

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Para poder hacer discriminaciones o evitar las repeticiones no debes usar el *, eso no permite realizar un acotamiento de lo que muestra. En esos casos tienes forzosamente que poner qué campos quieres mostrar, sin lo cual no se puede hacer selecciones por DISTINCT ni hacer agrupamientos (GROUP BY), que podrías eliminar los registros de más.
Si vas a mostrar TODOS los campos, entonces enumeralos a TODOS, pero un DISTINCT no va a funcionar así.
Primero, gracias por contestar :)

A lo que voy, despues de leer tu mensaje, he vuelto a la carga con esta consulta, al final con esta consulta:
SELECT DISTINCT tbl_categorias.* FROM tbl_categorias INNER JOIN tbl_ofertas ON tbl_categorias.id=tbl_ofertas.categoria ORDER BY tbl_categorias.categoria ASC;
hace exactamente lo que quiero, lo que me extraña, es que he probado a poner el * y me funciona correctamente, es decir, lo que comentas que no distinguiria, en principio no se cumple, al menos con mi consulta.

ta lueguin!!
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 05:18.