ローカルのWordPress(bbPress)からいくつかのデータをエクスポートしようとしていますが、データベースに存在しないGROUP_CONCAT列にデータが重複しています。私はポスト、そのメタ情報、および各行のその著者の情報を持っている一つの大きなビューを取得しようとしているMySQL GROUP_CONCATは不要な重複を防止します
SELECT
a.`ID`, a.`post_date`, a.`post_content`, a.`post_title`,
a.`post_status`, a.`post_name`, a.`post_type`, a.`post_parent`,
GROUP_CONCAT(d.`meta_key` SEPARATOR '{|}') AS `post_meta_keys`,
GROUP_CONCAT(d.`meta_value` SEPARATOR '{|}') AS `post_meta_values`,
b.`user_login`, b.`user_pass`, b.`user_nicename`, b.`user_email`,
b.`user_registered`, b.`display_name`,
GROUP_CONCAT(c.`meta_key` SEPARATOR '{|}') AS `user_meta_keys`,
GROUP_CONCAT(c.`meta_value` SEPARATOR '{|}') AS `user_meta_values`
FROM
`wp_posts` a
INNER JOIN
`wp_users` b ON a.`post_author` = b.`ID`
INNER JOIN
`wp_usermeta` c ON a.`post_author` = c.`user_id`
INNER JOIN
`wp_postmeta` d ON a.`ID` = d.`post_id`
WHERE
`post_type` = 'forum' OR
`post_type` = 'topic' OR
`post_type` = 'reply'
GROUP BY
a.`ID`
:
は、ここでのクエリです。 GROUP_CONCAT列に複数の重複がある以外は、すべてが良好です。たとえば、次の結果セットの最初の行から - カラムuser_meta_keys
値を有する:
[0] => nickname
[1] => first_name
[2] => last_name
[3] => description
[4] => rich_editing
[5] => comment_shortcuts
[6] => admin_color
[7] => use_ssl
[8] => show_admin_bar_front
[9] => locale
[10] => wp_capabilities
[11] => wp_user_level
[12] => dismissed_wp_pointers
[13] => show_welcome_panel
[14] => session_tokens
[15] => wp_dashboard_quick_press_last_post_id
[16] => community-events-location
[17] => managenav-menuscolumnshidden
[18] => metaboxhidden_nav-menus
[19] => nav_menu_recently_edited
[20] => users_per_page
[21] => wp__bbp_topic_count
[22] => wp__bbp_reply_count
[23] => nickname
[24] => first_name
[25] => last_name
[26] => description
[27] => rich_editing
[28] => comment_shortcuts
[29] => admin_color
[30] => use_ssl
[31] => show_admin_bar_front
[32] => locale
[33] => wp_capabilities
[34] => wp_user_level
[35] => dismissed_wp_pointers
[36] => show_welcome_panel
[37] => session_tokens
[38] => wp_dashboard_quick_press_last_post_id
[39] => community-events-location
[40] => managenav-menuscolumnshidden
[41] => metaboxhidden_nav-menus
[42] => nav_menu_recently_edited
[43] => users_per_page
[44] => wp__bbp_topic_count
[45] => wp__bbp_reply_count
[46] => nickname
[47] => first_name
[48] => last_name
[49] => description
[50] => rich_editing
[51] => comment_shortcuts
[52] => admin_color
[53] => use_ssl
[54] => show_admin_bar_
ニックネームを3回複製され、他のフィールドの多くは、あまりにもあります。私はいくつかの検索をしたし、他の人もこれを経験したように見える。グループ化された列で "DISTINCT"を使用して解決する人もいますが、値の一部が実際に複製されているため、それは機能しません。
だから私の質問は以下のとおりです。
1)GROUP_CONCAT列は非常に多くの重複があり、クエリが間違って書かれている場合、なぜ誰かが私に説明することができます - 私は、少なくとも数は「キーの間で一致して理解う列と '値'列 - しかしそれらもどちらもしません。
2)私が探しているものを達成するためにクエリを調整できますか?
ありがとうございました!
- EDIT#1 - よく間違っているのは、MySQLでGROUP_CONCATの上限を設定するのを忘れていたからです。
- EDIT#2 - GROUPSは各代替テーブルにある行数だけ複製されているようですね。つまり、ポストIDに一致する8行がポストIDと一致するので、usermetaの結果に8つの重複グループがあります...あるいは、ユーザーIDと一致する23の行がusermetaテーブルにあります。したがって、23の重複グループがありますpostmetaの結果では...私はまだ現在これを修正する方法を探しています。
- EDIT#3 - ここで
が追加MCVEです:
- 元のクエリ:http://sqlfiddle.com/#!9/386b98/2
- 更新クエリ:http://sqlfiddle.com/#!9/386b98/3
を参照してください:[?なぜ私は非常に単純なSQLクエリであることを私には思える何のためMCVEを提供する必要があります](https://meta.stackoverflow.com/questions/333952 /私が提供しようとしている、なぜ私が提供するものなのでしょうか? – Strawberry
@Strawberry - そうです - 私は見ていきます将来のすべてのSQL質問にMCVEを追加してください。できるだけ早く訪問者が2つのクエリの違いを見ることができるように、ここに追加します –