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

No me deja utilizar UNION con WHERE

Estas en el tema de No me deja utilizar UNION con WHERE en el foro de Mysql en Foros del Web. Que tal gente, quiero hacer una union de 2 tablas y ademas que solo muestre las tablas que contienen en un campo una palabra Código: ...
  #1 (permalink)  
Antiguo 04/05/2008, 09:41
 
Fecha de Ingreso: abril-2007
Mensajes: 77
Antigüedad: 17 años
Puntos: 0
No me deja utilizar UNION con WHERE

Que tal gente, quiero hacer una union de 2 tablas y ademas que solo muestre las tablas que contienen en un campo una palabra

Código:
(SELECT id, titulo, idioma, fecha, hora, categoria FROM tabla1) UNION ALL
(SELECT id, titulo, idioma, fecha, hora, categoria FROM tabla2) UNION ALL
WHERE idioma='spanish' ORDER BY fecha DESC LIMIT 50
Cual puede ser el error.

Gracias
  #2 (permalink)  
Antiguo 04/05/2008, 10: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, 5 meses
Puntos: 2658
Re: No me deja utilizar UNION con WHERE

¿Cuál es el mensaje que te pone?
__________________
¿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 04/05/2008, 11:17
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: No me deja utilizar UNION con WHERE

Me da la impresión que el segundo UNION ALL esta de mas.

La sintaxis del UNION es :

SELECT ...
UNION [ALL | DISTINCT]
SELECT ...
[UNION [ALL | DISTINCT]
SELECT ...]

Además del UNION extra, deberías especificar a que SELECT le estas aplicando el WHERE (los SELECT a las tablas individuales son parte del operador UNION).

Deberías especificarla así:

SELECT * FROM (
(SELECT id, titulo, idioma, fecha, hora, categoria FROM tabla1) UNION ALL
(SELECT id, titulo, idioma, fecha, hora, categoria FROM tabla2)

) WHERE idioma='spanish' ORDER BY fecha DESC LIMIT 50;

<< Con colores marqué la anidación de consultas >>

Última edición por TolaWare; 04/05/2008 a las 11:31
  #4 (permalink)  
Antiguo 04/05/2008, 17:46
 
Fecha de Ingreso: abril-2007
Mensajes: 77
Antigüedad: 17 años
Puntos: 0
Re: No me deja utilizar UNION con WHERE

Gracias por responder!, encontré una solucion especificando a cada uno el WHERE

Código:
(SELECT * FROM categoriavideos WHERE idioma='ES')
UNION ALL 
(SELECT * FROM categoriamusica WHERE idioma='ES')
UNION ALL 			 
(SELECT * FROM categorianoticias WHERE idioma='ES')
ORDER BY fecha DESC, hora DESC LIMIT 20"
Al campo idioma lo tengo como FULLText, esta bien con un WHERE idioma='ES' ?
  #5 (permalink)  
Antiguo 04/05/2008, 17:52
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, 5 meses
Puntos: 2658
Re: No me deja utilizar UNION con WHERE

Cuál es el mensaje que te pone?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 04/05/2008, 19:27
 
Fecha de Ingreso: abril-2007
Mensajes: 77
Antigüedad: 17 años
Puntos: 0
Re: No me deja utilizar UNION con WHERE

Con mi ultimo codigo ninguo, pero antes era un error sobre la funcion query, lo que pasa que utilizo PHP entre medio, entonces no me dice un error de mysql, sino que esta mal planteada la sintaxis desde PHP.

Igual lo ejecute y me dice esto.

MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE idioma='spanish' ORDER BY fecha DESC LIMIT 50' at line 3
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 19:44.