2012-03-26 16 views
12

Tengo una pregunta. Trataré de describir mi situación:Necesito obtener datos de productos de la base de datos mysql

Tengo una instalación de wordpress en la que instalé codeigniter. Todo esto va bien y también tengo acceso a la base de datos. Ahora tengo un plugin instalado para wordpress llamado: Woocommerce. Con este complemento puedes almacenar productos y datos de productos en tu base de datos. Ahora necesito acceder a los datos de mis productos woocommerce dentro de la aplicación codeigniter.

WooCommerce almacena sus productos similares:

Todos los productos entra en una tabla llamada: wp_posts En esta tabla hay una columna definido denominado: post_type WooCommerce identifica los mensajes como productos cuando post_type se establece en producto [ duh!].

Ahora hay otra tabla llamada wp_postmeta. En esta tabla, todos los datos del producto se almacenan en 4 columnas: 1. meta_id [identificador para el metarow] 2. post_id [se identifica a la tabla wp_posts] 3. meta_key [irá varias claves en ella como: sale_price, acciones, etc .. additional_price] 4. meta_value [para cada tecla hay un valor.]

En la tabla wp_postmeta i necesidad de resolver todos meta_keys con sus valores si el producto tiene un meta_key = '_ alquilable 'y el meta_valor =' sí '. Entonces, si esto es cierto, necesito obtener todas las otras meta_keys y valores donde el post_id es el mismo que el producto rentable. espero i no confundir a nadie ... Por ahora tengo esta consulta:

$sql = "SELECT p.id, p.post_title, p.guid, p.post_type, m.meta_key, m.meta_value 
      FROM wp_posts p 
      INNER JOIN wp_postmeta m 
      WHERE p.id=m.post_id 
      AND m.meta_key='_rentable' AND m.meta_value='yes' 
      "; 

Esto sólo devuelve el meta_key: _rentable y el valor: sí .. Pero también necesito para obtener el precio de ese producto.

Respuesta

10

Parece que está intentando obtener varios datos de diferentes filas en la misma tabla, lo que significa que debe hacer más de una combinación. ¿Esto le proporciona lo que está buscando?

$sql = "SELECT p.id, p.post_title, p.guid, p.post_type, m.meta_key, m.meta_value, meta_sp.meta_value as sale_price, meta_ap.meta_value as additional_price 
     FROM wp_posts p 
     INNER JOIN wp_postmeta m 
     INNER JOIN wp_postmeta meta_sp ON p.id=meta_sp.post_id 
      AND meta_sp.meta_key='sale_price' 
     INNER JOIN wp_postmeta meta_ap ON p.id=meta_ap.post_id 
      AND meta_ap.meta_key='additional_price' 
     WHERE p.id=m.post_id 
     AND m.meta_key='_rentable' AND m.meta_value='yes' 
     "; 
+0

¡Muchas gracias! Eso funcionó como un encanto. –

Cuestiones relacionadas