2012-03-26 107 views
12

我有一个问题。我将尝试描述我的情况:需要从mysql数据库中获得产品数据

我得到了一个wordpress安装,我安装了codeigniter。这一切都很顺利,我也访问了数据库。现在我有一个为wordpress安装的插件:Woocommerce。有了这个插件,您可以将产品和productdata存储在数据库中。现在我需要在codeigniter应用程序中访问我的woocommerce产品中的数据。

Woocommerce存储其同类产品:

所有产品进入一个称为表:wp_posts 在这个表中有一个名为定义的列:post_type Woocommerce标识的职位为产品时post_type设置为产品[咄!]。

现在有另一个表wp_postmeta。 在此表中,所有产品数据都存储在4列中: 1. meta_id [metarow的标识符] 2. post_id [将自身标识到wp_posts表中] 3. meta_key [将会有几个键入其中:价格,股票,additional_price等..] 4. meta_value [每个键都有一个值。]

在表wp_postmeta我需要整理所有meta_keys与他们的价值,如果产品得到了meta_key ='__ rentable '和meta_value ='是'。 所以如果这是真的,我需要得到所有其他meta_keys和值post_id是与可出租产品相同。 我希望我没有混淆任何人......现在我得到这个查询:

$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' 
      "; 

这只返回meta_key:_rentable和值:是的..但我也需要得到的价格产品。

回答

10

听起来好像你正试图从同一个表中的不同行中获取多条数据,这意味着你需要做多个连接。 这是否让你找到你想要的东西?

$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

非常感谢!这就像一个魅力。 – 2012-03-27 07:07:04