2012-03-26 105 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