WordPressでgeomywpプラグインのフィルタを使用してSQLクエリを変更して、分類と距離でユーザーを検索できるようにしました。テーブルを結合するときに単一の結果が表示されない
エンドクエリは、この
SELECT SQL_CALC_FOUND_ROWS u.ID as id FROM wp_users u
INNER JOIN wppl_friends_locator gmwlocations ON u.ID = gmwlocations.member_id
INNER JOIN wp_term_relationships ON u.ID = wp_term_relationships.object_id
WHERE wp_term_relationships.term_taxonomy_id = '47'
、彼らが探しているものをカテゴリに応じて、term_taxonomy_id
の変更のように見えます。
これに関する本当に奇妙なことは、結果が1つ以上ある場合にのみ機能することです。結果が1つだけの場合、このクエリは0の結果を示します。
私はそうのような地理的位置テーブルに参加削除する場合:
SELECT SQL_CALC_FOUND_ROWS u.ID as id FROM wp_users u
INNER JOIN wp_term_relationships ON u.ID = wp_term_relationships.object_id
WHERE wp_term_relationships.term_taxonomy_id = '47'
を次にそれが唯一の単一のユーザーを持っている分類法のために働きます。
なぜこのテーブルを結合すると、単一の結果に対して動作するクエリが停止するのか分かりません。私は以前これを見たことがない。私はmysqlのwordpressの外でクエリを実行し、同じ動作が発生します。
距離によるプラグイン検索の際にこの結合を残す必要があります。誰もこの奇妙な行動に光を当てることができますか?
をどのようにでもいることを検証しているが結果セットが空に戻った場合は1つの結果がありますか? –
wp_term_relationshipsテーブルには、一致するterm_taxonomy_idを持つエントリがあることがわかります。 wppl_friends_locatorテーブルへの内部結合を削除すると、単一の結果が戻ってきます。私は結合の仕組みを誤解していますか? – Guerrilla
はい、私はあなただと思います。そのレコードは、ジョインによって最も早くフィルタリングされています。あなたがすべてのテーブルからデータを見ると、私はあなたがこれを見ると信じています。 –