Código MySQL:
Ver original
Ya sé que MySQL lo ordena automáticamente por relevancia pero necesito usar AS relevancia porque necesito ejecutar esa relevancia en primer lugar y en segundo lugar otras como se puede ver en el código.
| |||
Falla MATCH AGAINST con UNION Tengo la siguiente consulta que falla sólo cuando uso AS relevancia:
Código MySQL:
Ver original Ya sé que MySQL lo ordena automáticamente por relevancia pero necesito usar AS relevancia porque necesito ejecutar esa relevancia en primer lugar y en segundo lugar otras como se puede ver en el código. |
| ||||
Respuesta: Falla MATCH AGAINST con UNION Cita: ¿Y para qué pones AS? Pon simplemente el alias.Ya sé que MySQL lo ordena automáticamente por relevancia pero necesito usar AS relevancia porque necesito ejecutar esa relevancia en primer lugar y en segundo lugar otras como se puede ver en el código.
Código SQL:
Eso, siempre que recuerdes que si o sí ambas consultas deben devolver la misma cantidad de campos, o de lo contrario generará un error de ejecución... Ver original
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Falla MATCH AGAINST con UNION Cita:
Iniciado por gnzsoloyo ¿Y para qué pones AS? Pon simplemente el alias.
Código SQL:
Eso, siempre que recuerdes que si o sí ambas consultas deben devolver la misma cantidad de campos, o de lo contrario generará un error de ejecución...Ver original La segunda consulta crea una columna virtual llamada relevancia en la que se muestra la cifra de relevancia que la primera no tiene ¿Puede ser ese el fallo? Por otro lado quiero aclarar que el primer SELECT en el UNION está puesto en primer lugar con la intención de que esos resultados salgan primero. |
| |||
Respuesta: Falla MATCH AGAINST con UNION Cita:
Iniciado por gnzsoloyo Precisamente eso es lo que te estoy diicendo. Si lees en el manual de referencia de MySQL (y de cualquier DBMS) verás que es condición obligatoria que todas las consultas unidas con una cláusula UNION deben devolver la misma cantidad de registros. No es opcional. Si o sí. Genera una columna falsa con un valor cero o uno para esa columna y listo. No me funciona. He probado 2 cosas: Usando SELECT *, NULL en el primer SELECT y creando una nueva columna en MySQL llamada relevancia (de tipo TEXT) sin ningún valor dentro. |
| ||||
Respuesta: Falla MATCH AGAINST con UNION Cita: Como información para ayudarte, es insuficiente...No me funciona. ¿Qué no funciona? ¿Error de sintaxis? ¿Error de ejecución? ¿No devuelve datos? ¿Qué? Si quieres ayudas que sirvan, debes darnos detalles que nos sirvan para saber qué estás viendo tu. Nosotros desde acá no lo sabemos.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Falla MATCH AGAINST con UNION Disculpa. Estoy repasando todo el código. Me he fijado que en el momento que meto MATCH AGAINST en cualquier UNION me lo ordena por la columna que sea PRIMARY KEY en MySQL sin que eso se indique en el código en ningún momento. De hecho no me responde a los ORDER BY que le pongo ya sean ASC, DESC o lo que sea. ¿Puede que por ser PRIMARY KEY le otorgue mayor prioridad obligatoria? |
| ||||
Respuesta: Falla MATCH AGAINST con UNION Puede ser, desde el momento en que el UNION, solo, intenta hacer un matching entre los dos resultados para descartar registros duplicados. Si quieres que se encadene sin realizar ese matching deberías usar UNION ALL. Por otro lado, estás usando el asterisco, una de las peores formas de consulta. Sería preferible que invocaras uno a uno los campos que efectivamente usarás, aunqu eeso implique listarlos todos.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
Etiquetas: |