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

Duda select

Estas en el tema de Duda select en el foro de Mysql en Foros del Web. Tengo este select que une la tabla juegos con la tabla artículos y me devuelve los campos: id,nombre,fecha y idt: SELECT r.id, r.nombre, r.fecha, r.idt, ...
  #1 (permalink)  
Antiguo 08/08/2011, 02:36
 
Fecha de Ingreso: julio-2011
Mensajes: 12
Antigüedad: 12 años, 9 meses
Puntos: 0
Duda select

Tengo este select que une la tabla juegos con la tabla artículos y me devuelve los campos: id,nombre,fecha y idt:


SELECT r.id, r.nombre, r.fecha, r.idt, a.id, a.nombre, a.fecha, a.idt FROM juegos AS r JOIN articulos AS a order by fecha

Esta sentencia me devuelve 8 valores, necesito que me devuelva 4, algo así:

Select r.id OR a.id, r.nombre OR a.nombre, r.fecha OR a.fecha, r.idt OR a.idt

Saludos.
  #2 (permalink)  
Antiguo 08/08/2011, 05:16
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: Duda select

Por un lado, no existen campos de aparición condicional el MySQL cuando los pones en el SELECT. Todo lo que pones aparecerá.
Por otro lado, sería posible jugar con la función IF(condición, verdadero, falso) para hacerlo, pero el nombre de la columna sería siempre el mismo, por lo que sólo tu sabrías que hacer con lo que aparece allí, y además deberías definir cuál es la condición a cumplir en cada caso.
Otra solución (más práctica) es resolver eso en la programación, cuando presentas los datos, cosa que excede los límites de este foro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/08/2011, 06:46
 
Fecha de Ingreso: julio-2011
Mensajes: 12
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Duda select

No descarto hacerlo mediante php aunque seria engorronoso porque estoy uniendo varias sentecias y el grupo arroja 4 valores

Con if es posible que si no encuentra r.id arroje a.id?
  #4 (permalink)  
Antiguo 08/08/2011, 08:41
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Duda select

Hola jimion:

Hace tiempo plantearon una situación semejante, igual y podrías darle un vistazo a la pregunta:

http://www.forosdelweb.com/f86/coloc...ia-sql-932764/

Podrías utilizar un LEFT JOIN y en el select poner algo como esto:

Código:
Select
if(r.id is null, a.id, r.id)
....
....
Igual y sería conveniente que nos pongas la estructura de tus tablas y algunos datos de pruebas para poder visualizar mejor el problema y poder ofrecerte otra solución si esto no funciona.

Saludos
Leo.
  #5 (permalink)  
Antiguo 08/08/2011, 09:30
 
Fecha de Ingreso: julio-2011
Mensajes: 12
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Duda select

Creo que left join no me vale, igual me equivoco.

(SELECT cat.id, cat.nombre, count(jue.categoria) AS cantidad, cat.identi FROM cat_juegos AS cat LEFT JOIN juegos AS jue ON cat.nombre = jue.categoria GROUP BY cat.nombre)
UNION ALL
(SELECT r.id, r.nombre, r.fecha AS fechita, r.idt FROM juegos AS r JOIN articulos AS a GROUP BY fechita DESC)

El problema radica en la 2º consulta donde quiero unir:

// Juegos //
id
nombre
fecha
idt

// Articulos //
id
nombre
fecha
idt


También e pensado en separar la consulta y después unirla con UNION, pero si estoy en lo cierto después no puedo unirlas porque la primera consulta no contiene fecha

Saludos.

Etiquetas: campos, join, select, 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 16:48.