2017-03-18 12 views
0

SQLクエリを減らしたい。私は私が持っているので、4を得る。この場合、SQL文を最適化する:複数の値を選択する

SELECT COUNT(meta_key) FROM `fWR6qIN_postmeta` Where meta_key like 'product_shops_%_price' AND (post_id = 7951) 

enter image description here

この文は私のフィールドの量(0-3)私は持っているが返されます。ここでは、私のテーブルの例を見ることができます値はフィールド0から3までです。各番号については、product_shops_%_price,product_shops_%_price_old,product_shops_%_shopおよびproduct_shops_%_linkが必要です。したがって、4 * 4 = 16の値。 今度はクエリを4から1に減らしたいと思います。以前私は4つのフィールドを分けて尋ねました。だから私は1の値の0のために0の4つの値を得た。

私の計画は、SQLステートメントを最適化し、すべての値を一度に選択する。どのように私はそれを行うことができます誰も計画を持っていますか?

さらに、配列に0を含むすべての値をパックすることができれば、非常にうれしいでしょう。すべて配列に1が入っています。それで簡単に繰り返すことができます。

私は非常に助けに感謝します! よろしくお願いいたします。

答えて

0

これは返されません。

SELECT * 
FROM `fWR6qIN_postmeta` pm 
WHERE meta_key like 'product_shops_%' AND 
     post_id = 7951; 

EDIT:

これは、あなたが欲しいものを行う必要があります。

SELECT * 
FROM `fWR6qIN_postmeta` pm 
WHERE meta_key regexp '^(product_shops)_(link|price|price_old|shop)$' AND 
     post_id = 7951; 

あなたはまた、別のlike表現でこれを行うことができます。

SELECT * 
FROM `fWR6qIN_postmeta` pm 
WHERE post_id = 7951 AND 
     (meta_key like 'product_shops_%_price' OR 
     meta_key like 'product_shops_%_link' OR 
     meta_key like 'product_shops_%_price_old' OR 
     meta_key like 'product_shops_%_shop' 
    ); 
+0

号がたくさんあります'product_shops_0 _... 'で他の値を返します。だから私はこれらの4種類のフィールドだけが必要です! –

+0

いいえ..動作しません...何も得られません –

+0

うん、それは動作します。そして私のさらなる質問は、PHPのすべての値をどのようにして反復することができるのですが、フィールドの数が一致する1つの配列の各値を繰り返すことができますか? –

関連する問題