2012-03-26 16 views
12

ho una domanda. Proverò a descrivere la mia situazione:È necessario prendere productdata di database mysql

Ho ottenuto un'installazione wordpress su cui ho installato il codeigner. Tutto va bene e ho anche avuto accesso al database. Ora ho installato un plugin per wordpress chiamato: Woocommerce. Con questo plugin è possibile memorizzare prodotti e dati di prodotto nel proprio database. Ora ho bisogno di accedere ai dati dai miei prodotti woocommerce all'interno dell'applicazione codeigniter.

Woocommerce memorizza i propri prodotti come questo:

Tutti i prodotti passa in una tabella denominata: wp_posts In questa tabella c'è una colonna definito definito: post_type Woocommerce identifica i messaggi come prodotti quando post_type è impostato al prodotto [ duh!].

Ora c'è un'altra tabella chiamata wp_postmeta. In questa tabella tutti i dati del prodotto vengono archiviati in 4 colonne: 1. meta_id [identificatore per il metarow] 2. post_id [si identifica nella tabella wp_posts] 3. meta_key [ci saranno diverse chiavi in ​​esso come: SALE_PRICE, magazzino, additional_price ecc ..] 4. meta_value [per ogni tasto è presente un valore.]

Nella tabella wp_postmeta ho bisogno di risolvere tutti i meta_keys con i loro valori, se il prodotto ha un meta_key = '_ affittabile 'e il meta_value =' sì '. Quindi, se questo è vero, ho bisogno di ottenere tutti gli altri meta_keys ei valori in cui la post_id è lo stesso del prodotto affittabile. Spero che non mi confondere nessuno ... Per ora ho ottenuto questa domanda:

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

Questo restituisce solo il meta_key: _rentable e il valore: sì .. Ma ho anche bisogno di ottenere il prezzo di tale Prodotto.

risposta

10

Sembra che tu stia cercando di ottenere più pezzi di dati da diverse righe nella stessa tabella, il che significa che devi fare più di un join. Questo ti fa ottenere ciò che stai cercando?

$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

Grazie mille! Ha funzionato come un fascino. –

Problemi correlati