Ich habe eine Abfrage zu wählen Beiträge (wp_posts table
), wo entweder 1 Schlüssel/Wert-Paar oder ein anderes ist auf der Sekunde vorhanden Tabelle (wp_postmeta
). Im Prinzip funktioniert das, aber ich muss dann die Ergebnisse nach dem ersten Schlüssel/Paar-Wert() und dann nach dem zweiten (staff_surname
) ordnen.Reihenfolge Abfrage von zwei Schlüssel/Wert-Paare, wo die Felder für die Schlüssel/Wert-Paare sind die gleichen
Das Problem ist, wegen der Art und Weise, wie die Ergebnisse von der Abfrage ergriffen werden, gibt es keinen department_head
Schlüssel zu verwenden, um die Ergebnisse zu bestellen. Ich vermute, dass dies daran liegt, dass die Abfrage zuerst den Schlüssel staff_surname
findet?
Erneut Raten, aber wenn meine obige Vermutung richtig ist, dann ist es, weil, obwohl ich die Tabelle zweimal beitreten, MYSQL nur die erste Instanz aus der wp_postmeta
Tabelle ergreift, wenn die staff_surname
Bedingung erfüllt ist. Dies ist es, was ich brauche, um herum zu finden, damit ich die richtigen Daten habe, um die Ergebnisse bestellen zu können.
Voll Abfrage -
SELECT SQL_CALC_FOUND_ROWS wp_posts.*
FROM wp_posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
WHERE 1=1
AND (
wp_term_relationships.term_taxonomy_id IN (34)
)
AND wp_posts.post_type = 'people'
AND (
wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'private'
)
AND (
(
wp_postmeta.meta_key = 'department_head'
AND CAST(wp_postmeta.meta_value AS CHAR) = 'private-client'
)
OR (
mt1.meta_key = 'staff_surname'
AND CAST(mt1.meta_value AS CHAR) != ''
)
)
GROUP BY wp_posts.ID
ORDER BY mt1.meta_value ASC
LIMIT 0, 10
Beispiel von Abfrageergebnissen -
ID name meta_id post_id meta_key meta_value meta_id post_id meta_key meta_value
1 Test1 10 1 random_key random_value 11 1 staff_surname Smith
2 Test1 20 2 random_key random_value 21 2 staff_surname Jones
3 Test1 30 3 random_key random_value 31 3 staff_surname Harris
Beispiel dessen, was ich verlangen, wenn Jones war der Abteilungsleiter -
ID name meta_id post_id meta_key meta_value meta_id post_id meta_key meta_value
1 Test1 10 1 11 1 staff_surname Smith
2 Test1 22 2 department_head private-client 21 2 staff_surname Jones
3 Test1 30 3 31 3 staff_surname Harris
Die 'department_head' Schlüssel existiert in der überwiegenden Mehrheit der Fälle nicht, deshalb ist der Schlüssel/Wert in den anderen Fällen leer.
Gibt es eine Möglichkeit, die von mir benötigten Bestellergebnisse zu erzielen?
Hinweis: Der Grund, dass ich hier im Gegensatz zu der Wordpress-Website geschrieben habe, ist, weil dies eine benutzerdefinierte Abfrage ist, nicht WP generiert, so wird es wahrscheinlich außerhalb des Umfangs der meisten WP-Experten sein.
Wie auf der Erde Sie gezogen, dass man aus dem Sack, werde ich nie wissen! Funktioniert wie ein Zauber, achtet genau auf das, was ich brauchte, und ich fand heraus, dass ich diese Abfrage mit WP-Filtern durchführen konnte, so dass viel weniger Code benötigt wurde. Die einzige sehr kleine Änderung war, dass ich "m1.meta_value ASC" in "DESC" ändern musste. Vielen Dank für deine Hilfe. –
Perfekt, ich hatte Glück ... :-) – jordeu
Ich habe ASC auf DESC in der Antwort bearbeitet und geändert – jordeu