我有一个问题。我将尝试描述我的情况:
我有一个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 ..但我还需要获得该产品的价格。
答案 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'
";