Ver Mensaje Individual
  #5 (permalink)  
Antiguo 29/11/2012, 07:59
Avatar de gnzsoloyo
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
Respuesta: Leer columnas metakey de wordpress

Mira, el problema que tenemos apra responderte es, a mi entender, que tenemos un conflicto conceptual con una tabla como la de esas metakeys: Es una estructura que representa una violación tan flagrante al modelo relacional que nuestra primera reacción es descartar el problema como "basura".
No es algo peyorativo, sucede que la primera regla absoluta del modelo E-R es que un atributo de una entidad sólo puede tener un único dominio (campo de existencia o rango de valores válidos), por lo que es impensable, para una base bien diseñada, usar una tabla de parámetros cuyos valores representes cosas disimiles como esas.
¿Se entiende el concepto?
Un atributo puede ser fecha, pero sólo debe ser fechas, puede ser números, pero sólo debe ser números. En cambio esa tabla puede ser cualquier cosas, incluso cosas contradictorias, y eso es imposible a nivel de razonamiento.

Por eso nos resulta un poco fastidioso ocuparnos de responder una consulta tan conflictiva.

Ahora bien, yendo a tu pregunta, la solución a una consulta que verifica dos parámetros diferentes sobre el mismo campo, es exactamente igual que si consultaras los nombres de los usuarios de un mensaje que tiene como remitente y destinatario sendos usuarios del mismo sistema, ambos en la tabla Usuarios: Se debe invocar la tabla relacionada dos veces, una por cada usuario buscado.
En tu caso, esta relación implica llamar la tabla de parámetros una vez por cada parámetro buscado.
¿Se entiende?

O sea:
Código MySQL:
Ver original
  1. SELECT M1.user_id
  2. FROM wp_usermeta m1 INNER JOIN wp_usermeta m2 ON M1.user_id  = M2.user_id
  3.     M1.meta_key = 'genero' AND M1.meta_value = 'male'
  4.     AND M2.meta_key = 'fecha_nac' M2.meta_value = '12/12/2012'

Esa sería mas o menos la idea.

Un detalle: Recuerda que aplicaciones como WorPress son creadas por programadores, y eso no significa que desde el punto de vista del diseño de datos estén bien creadas. Los arquitectos de aplicaciones no necesariamente saben de arquitectura de datos. Son especialidad diferentes, y los programadores suelen menospreciar la ortodoxia de los DBA porque no la comprenden, y por eso terminan creando estructuras de datos que no están bien diseñadas.
Que WordPress sea MUY usado, no implica necesariamente que su arquitectura de datos sea especialmente buena.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)