需要从mysql数据库中获取productdata

时间:2012-03-26 20:05:56

标签: php mysql

我有一个问题。我将尝试描述我的情况:

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

Woocommerce存储其产品:

所有产品都进入一个名为:wp_posts的表中 在此表中,定义了一个名为:post_type的列 当post_type设置为product [duh!]时,Woocommerce将帖子标识为产品。

现在有另一个名为wp_postmeta的表。 在此表中,所有productdata都存储在4列中: 1. meta_id [metarow的标识符] 2. post_id [将自己标识为wp_posts表] 3. meta_key [会有几个键进入它:sale_price,stock,additional_price等..] 4. meta_value [每个键都有一个值。]

在表wp_postmeta中,如果产品得到meta_key ='_ rentable'并且meta_value ='yes',我需要使用它们的值来整理所有meta_keys。 因此,如果这是真的,我需要获取所有其他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和值:yes ..但我还需要获得该产品的价格。

1 个答案:

答案 0 :(得分: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'
        ";