2012-03-26 13 views
12

質問があります。私は自分の状況を説明しようとします:mysqlデータベースから商品データを取得する必要があります

私はcodeigniterをインストールしたワードプレスインストールを手に入れました。これはすべてうまくいって、データベースにもアクセスできます。今私はワードプレスのためにインストールされたプラグインを持っている:Woocommerce。このプラグインを使用すると、製品と製品データをデータベースに格納できます。今私はcodeigniterアプリケーション内の私のwoocommerce製品からのデータにアクセスする必要があります。

Woocommerceは、このような自社製品格納しますと呼ばれるテーブルに入る

すべての製品を:この表でwp_posts は、定義された列が呼び出されます:post_type Woocommerceは[post_typeを製品に設定されている製品としてのポストを特定デュオ!]

今、wp_postmetaという別のテーブルがあります。 このテーブルでは、すべての製品データが4列に格納されます。 1 meta_id [メタローの識別子] 2. post_id [wp_postsテーブルに自身を指定します] 3. meta_key [ SALE_PRICE、株式、additional_priceなど..] 4. meta_value [各キーの値がある。]製品はmeta_key = '_賃貸を得た場合、私はそれらの値を持つすべてmeta_keysを整理する必要がwp_postmetaテーブルで

'とmeta_value =' yes 'です。 これが本当であれば、post_idがレンタル可能な製品と同じである他のすべてのmeta_keysと値を取得する必要があります。私は誰を混同していない願ってい は...今のところ私はこのクエリを得た:

$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

ありがとうございました!それは魅力のように働いた。 –

関連する問題