Título: ¿Cómo hacer esta consulta? Publicado por: KateLibby en 9 Mayo 2012, 12:33 pm Hola, tengo la siguiente tabla con el nombre wp_term_relationships:
He hecho la siguiente consulta, Código
Lo que me interesa es que me devuelva los valores que cumplen las dos condiciones, pero supongo que la consulta no se puede hacer de esta forma, ya que no me devuelve ningún registro. ¿Cómo puedo hacerla de forma correcta, de manera que me devuelva el object_id = 1? Gracias de antemano. Título: Re: ¿Cómo hacer esta consulta? Publicado por: el-brujo en 9 Mayo 2012, 12:56 pm Código
Título: Re: ¿Cómo hacer esta consulta? Publicado por: KateLibby en 9 Mayo 2012, 13:02 pm Perfecto! Muchísimas gracias ;-)
Título: Re: ¿Cómo hacer esta consulta? Publicado por: KateLibby en 10 Mayo 2012, 12:51 pm Vaya, ahora que lo he probado he encontrado una pega.
Si no me equivoco, esta consulta devuelve los object_id que en el campo term_taxonomy_id tienen el valor 7 OR 8. ¿Hay alguna forma de hacer que me devuelva los que tienen el valor 7 AND 8? Código
Gracias. Título: Re: ¿Cómo hacer esta consulta? Publicado por: HdM en 10 Mayo 2012, 13:45 pm Buenas.
Si no me equivoco, esta consulta devuelve los object_id que en el campo term_taxonomy_id tienen el valor 7 OR 8. ¿Hay alguna forma de hacer que me devuelva los que tienen el valor 7 AND 8? Código
No tiene sentido lo que planteas. Ten en cuenta que el 'AND' es excluyente para la consulta que montas, por eso si lo utilizas, no hay resultados. En el 'WHERE' sólo utilizas un campo, y éste no puede tener 2 valores diferentes para un mismo registro. El resultado que buscas, es el obtenido con la consulta que te ha indicado @el-brujo (ya sea utilizando 'IN', 'OR') Saludos. Título: Re: ¿Cómo hacer esta consulta? Publicado por: KateLibby en 10 Mayo 2012, 13:56 pm
El caso es que teniendo esta tabla que he planteado al principio, si hago la consulta Código
...me devuelve 1 y 2. En esto estamos de acuerdo. Pero mi pregunta es: ¿Cómo puedo hacerlo para que solamente me devuelva 1? Título: Re: ¿Cómo hacer esta consulta? Publicado por: HdM en 10 Mayo 2012, 14:18 pm Buenas.
Es que igual estás planteando mal, el cómo enfocar la consulta. ¿quieres saber qué 'term_taxonomy_id' tienen como 'object_id'=1? ¿Podrías explicar un poco, el contexto en el que se mueve esta consulta? Te lo digo ya que tal y cómo lo planteas, la consulta se podría montar así (aunque habría más posibilidades): Código
, pero es que no le veo mucho sentido a esto. Saludos. Título: Re: ¿Cómo hacer esta consulta? Publicado por: KateLibby en 10 Mayo 2012, 15:33 pm Es que lo que quiero hacer es un poco rebuscado, porque estoy intentando integrar un programa hecho en PHP al Wordpress, aprovechando las funciones y la estructura de la base de datos de este. Entonces, lo que he tenido que hacer es apañarme con las Etiquetas para que el cliente pueda asignar un Peso, Estatura y Edad a una página (cada Peso, Edad y Estatura pueden tener más de un valor).
Total, que lo que tengo es una tabla en la que el object_id es el identificador de la página y, el term_texonomy_id la Etiqueta que tiene asociada. Por ejemplo: object_id term_taxonomy_id ---------- ---------------------- 1 7 1 8 1 9 2 8 3 5 3 10 etc... Teniendo en cuenta la tabla: term_taxonomy_id name --------------------- -------- 7 3 Kg 8 2 años 9 4 Kg 5 1 Kg 10 0.72m Cada object_id puede tener varios valores de Kg, Edad y Estatura. Por esta razón me interesa que me devuelva el object_id=1 cuando desde el formulario que uso para filtrar los resultados seleccione 3 Kg y 2 años. Título: Re: ¿Cómo hacer esta consulta? Publicado por: KateLibby en 10 Mayo 2012, 15:46 pm He encontrado una forma, aunque no es la solución que buscaba (más bien es una chapuza), pero funciona. Así que la comento por si a alguien le puede servir.
Al final lo que he hecho ha sido usar la misma consulta que propuso el-brujo, en la que me devuelve todos los object_id que tienen alguno de los term_taxonomy_id que le pasamos a través del formulario de filtro. Y para hacer que solo muestre los que coinciden todos los parámetros, he creado una función que me devuelva cierto si ese object_id tiene todos esos parámetros (en lugar de cualquier de ellos, que es lo que me devolvía la consulta SQL). Entonces queda así: Código
Y la función: Código
Título: Re: ¿Cómo hacer esta consulta? Publicado por: HdM en 11 Mayo 2012, 11:38 am Buenas.
¿Pero entonces te vale la última consulta montada o no? Saludos. Título: Re: ¿Cómo hacer esta consulta? Publicado por: KateLibby en 11 Mayo 2012, 11:51 am Hola Bulld0z3r, nos cruzamos al escribir los post.
Al final no me sirvió lo que me propusiste, ya que yo no sabía si el valor de object_id iba a ser 1. De hecho, este 1 es el que esperaba que la consulta me devolviera. Gracias por vuestras respuestas. Título: Re: ¿Cómo hacer esta consulta? Publicado por: HdM en 11 Mayo 2012, 17:17 pm Citar Al final no me sirvió lo que me propusiste, ya que yo no sabía si el valor de object_id iba a ser 1. De hecho, este 1 es el que esperaba que la consulta me devolviera. Jejeje, respuesta esperada. Era absurdo lo que estaba proponiendo. Ya viendo tu post, con tu solución propuesta, se entiende lo que pretendías. Creo que ganarías en eficiencia, si antes de tu primera consulta, hicieses otra, en la que teniendo capturados los valores de los parámetros, agrupases por el 'object_id' y luego con HAVING le metieses un COUNT (object_id)=Nº de parámetros. Así conseguirías sacar el 'ID' que necesitas. Es decir: Código
En este caso se iguala a 3 el COUNT, ya que son 3, los parámetros que utilizas. Te ahorrarías el uso de funciones, bucles y condicionales. Saludos. Título: Re: ¿Cómo hacer esta consulta? Publicado por: KateLibby en 14 Mayo 2012, 11:53 am Uf! Menuda consulta! La verdad es que me cuesta un poco seguirla porque hay algunas instrucciones que no he usado nunca.
De momento, como me funciona, lo dejaré como lo tengo :rolleyes: Gracias! |