2017-03-18 4 views
0

Ich möchte meine SQL-Abfragen verringern. Hier sehen Sie ein Beispiel für meine Tabelle sehen: enter image description hereOptimieren SQL-Anweisung: Wählen Sie mehrere Werte

Diese Anweisung gibt mir die Menge der Felder (0-3) Ich habe:

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

In diesem Fall bekomme ich einen 4. Also ich habe Werte aus dem Feld 0 bis 3. Für jede Nummer brauche ich product_shops_%_price, product_shops_%_price_old, product_shops_%_shop und product_shops_%_link. Also, 4 * 4 = 16 Werte. Jetzt möchte ich meine Abfrage von 4 auf 1 Abfrage reduzieren. Zuvor habe ich alle 4 Felder getrennt gefragt. Also habe ich 4 Werte für 0, für Werte für 1, und so eine ..

Mein Plan jetzt ist die Optimierung dieser SQL-Anweisung und wählen Sie alle 16 Werte auf einmal. Hat jemand einen Plan wie ich das machen kann?

Und weiter, es wäre sehr schön, wenn ich alle Werte packen könnte, die eine 0 in einem Array enthält, alles was eine 1 in einem Array enthält und so weiter ... Also kann ich sie leicht durchlaufen.

Ich wäre sehr dankbar über Hilfe! Grüße!

Antwort

0

Geht das nicht zurück, was Sie wollen?

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

EDIT:

Dies sollte das tun, was Sie wollen:

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

Sie können dies auch mit separaten like Ausdrücke:

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

Nein, es gibt eine Vielzahl von andere Werte mit 'product_shops_0 _...'. Also brauche ich nur diese 4 verschiedenen Arten von Feldern! –

+0

Nein .. funktioniert nicht ... Einfach nichts bekommen –

+0

Ja, das funktioniert. Und meine weitere Frage ist, wie kann ich durch alle Werte in PHP und jeden Wert in einem Array, wo die Nummern der Felder übereinstimmen, iterieren? –