クエリでGROUP_CONCATを使用して正しい結果が得られない

mvasco

クエリ内で使用する7つのテーブルがあります。

tb_post, tb_spots, users, td_sports, tb_spot_types, tb_users_sports, tb_post_media

これは私が使用しているクエリです:

SELECT po.id_post AS id_post, 
po.description_post as description_post,
 sp.id_spot as id_spot, 
po.date_post as date_post,
 u.id AS userid, 
u.user_type As tipousuario, 
u.username AS username, 
spo.id_sport AS sportid, 
spo.sport_icon as sporticon, 
st.logo_spot_type as spottypelogo, 
sp.city_spot AS city_spot, 
sp.country_spot AS country_spot, 
sp.latitud_spot as latitudspot,
 sp.longitud_spot as longitudspot,
 sp.short_name AS spotshortname, 
sp.verified_spot AS spotverificado, 
 u.profile_image AS profile_image,
sp.verified_spot_by as spotverificadopor,
 uv.id AS spotverificador,
 uv.user_type AS spotverificadornivel,
 pm.media_type AS mediatype,
 pm.media_file AS mediafile,

GROUP_CONCAT(tus.user_sport_sport) sportsdelusuario,
GROUP_CONCAT(logosp.sport_icon) sportsdelusuariologos,
GROUP_CONCAT(pm.media_file) mediapost,
GROUP_CONCAT(pm.media_type) mediaposttype

FROM tb_posts po 

LEFT JOIN tb_spots sp ON po.spot_post = sp.id_spot 
LEFT JOIN users u ON po.uploaded_by_post = u.id 
LEFT JOIN tb_sports spo ON sp.sport_spot = spo.id_sport
LEFT JOIN tb_spot_types st ON sp.type_spot = st.id_spot_type
LEFT JOIN users uv ON sp.verified_spot_by = uv.id
LEFT JOIN tb_users_sports tus ON tus.user_sport_user = u.id
LEFT JOIN tb_sports logosp ON logosp.id_sport = tus.user_sport_sport
LEFT JOIN tb_post_media pm  ON pm.media_post = po.id_post 

WHERE po.status = 1
GROUP BY po.id_post,uv.id

一部のGROUP_CONCATグループで問題が発生しています。

GROUP_CONCAT(tus.user_sport_sport) sportsdelusuario 私に正しいアイテムを与えていますが、繰り返されます、すべてのアイテムは2回

GROUP_CONCAT(logosp.sport_icon) sportsdelusuariologos 私に正しいアイテムを与えていますが、繰り返されます、すべてのアイテムは2回

GROUP_CONCAT(pm.media_file) mediapost 私に正しいアイテムを与えていますが、4回繰り返されています

GROUP_CONCAT(pm.media_type) mediaposttype s私に正しいアイテムを与えますが、4回繰り返しました

必要に応じて、ここにすべてのテーブル構造を配置できます。

ウエルド

クエリで結合された複数の1対多の関係は、集計結果に乗法的影響を及ぼします。標準ソリューションはサブクエリです。

あなたになら変えられる

GROUP_CONCAT(pm.media_type) mediaposttype
...
LEFT JOIN tb_post_media pm  ON pm.media_post = po.id_post 

pm.mediaposttype
...
LEFT JOIN (
   SELECT media_post, GROUP_CONCAT(media_type) AS mediaposttype 
   FROM tb_post_media 
   GROUP BY media_post
) AS pm ON pm.media_post = po.id_post 

tb_post_mediaが非常に大きく、po.status = 1外部クエリの条件によってサブクエリの結果が大幅に減少する場合は、サブクエリ内で元の結合を複製して結果をフィルタリングする価値があります。

同様に、コメントで述べた相関バージョンも、外部クエリの結果が比較的少ない場合、パフォーマンスが向上する可能性があります。(それぞれのGROUP_CONCAT()を個別に計算することは、後者の結果のごく一部しか実際に使用しない場合、一度だけ計算するよりもコストがかからない可能性があります)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SQLクエリで正しい結果が得られない

分類Dev

gteおよびlteクエリを使用してmongodbで正確な結果が得られない

分類Dev

2カウントクエリを結合しても正しい結果が得られない

分類Dev

レルムクエリで正しい結果が得られない

分類Dev

MySQLクエリでJSON_CONTAINSを使用しても結果が得られない

分類Dev

MongoDB:$ geoWithin演算子を使用して正しい結果が得られない

分類Dev

exec()でpingを実行しても正しい結果が得られない

分類Dev

複数の結合で正しい結果が得られないLinqクエリ

分類Dev

正規表現のOracleデータベースクエリで正しい結果が得られない

分類Dev

GROUP_CONCATを使用したクエリがPHPで機能しない

分類Dev

IN()節で副選択を使用したMySQLクエリで十分な結果が得られない

分類Dev

SQLクエリ-ALLおよび '='演算子を使用して期待される結果が得られない

分類Dev

SQLクエリ-ALLおよび '='演算子を使用して期待される結果が得られない

分類Dev

PHP Elasticsearch、フィルターを使用したブールクエリで結果が得られない

分類Dev

1対多の結合を使用するこのクエリで重複する値を処理する方法と、group_concatを使用している場合でもそれらが表示されるのはなぜですか?

分類Dev

Pandasでastypeを使用しても期待した結果が得られない

分類Dev

where DeviceName -contains を使用して結果が得られない

分類Dev

SQLCOUNTで正しい結果が得られない

分類Dev

`dplyr :: case_when`で正しい結果が得られない

分類Dev

LongAccumulator が正しい結果を得られない

分類Dev

GROUP_CONCATがサブクエリで機能しない

分類Dev

コレクションを使用してドメインクラスにクエリを実行しても、期待される結果が得られないGrails

分類Dev

SQL ISNULLチェックで正しい結果が得られない

分類Dev

JavaでreadLine()を使用して期待する結果が得られない

分類Dev

ノードjs、mongodbでpromiseinloopを使用して結果が得られない

分類Dev

COALESCEを使用しても、SQLServerで目的の結果が得られない

分類Dev

クエリで「GROUP_CONCAT」と「HAVING」を使用した場合、MySQLの結果をカウントするにはどうすればよいですか?

分類Dev

このコードの何が問題になっていますか。常に結果0を出力します。phpmyadminで直接クエリを実行すると、正しい結果が得られます。

分類Dev

SSISのパラメーターを使用した日付計算で正しい結果が得られない

Related 関連記事

  1. 1

    SQLクエリで正しい結果が得られない

  2. 2

    gteおよびlteクエリを使用してmongodbで正確な結果が得られない

  3. 3

    2カウントクエリを結合しても正しい結果が得られない

  4. 4

    レルムクエリで正しい結果が得られない

  5. 5

    MySQLクエリでJSON_CONTAINSを使用しても結果が得られない

  6. 6

    MongoDB:$ geoWithin演算子を使用して正しい結果が得られない

  7. 7

    exec()でpingを実行しても正しい結果が得られない

  8. 8

    複数の結合で正しい結果が得られないLinqクエリ

  9. 9

    正規表現のOracleデータベースクエリで正しい結果が得られない

  10. 10

    GROUP_CONCATを使用したクエリがPHPで機能しない

  11. 11

    IN()節で副選択を使用したMySQLクエリで十分な結果が得られない

  12. 12

    SQLクエリ-ALLおよび '='演算子を使用して期待される結果が得られない

  13. 13

    SQLクエリ-ALLおよび '='演算子を使用して期待される結果が得られない

  14. 14

    PHP Elasticsearch、フィルターを使用したブールクエリで結果が得られない

  15. 15

    1対多の結合を使用するこのクエリで重複する値を処理する方法と、group_concatを使用している場合でもそれらが表示されるのはなぜですか?

  16. 16

    Pandasでastypeを使用しても期待した結果が得られない

  17. 17

    where DeviceName -contains を使用して結果が得られない

  18. 18

    SQLCOUNTで正しい結果が得られない

  19. 19

    `dplyr :: case_when`で正しい結果が得られない

  20. 20

    LongAccumulator が正しい結果を得られない

  21. 21

    GROUP_CONCATがサブクエリで機能しない

  22. 22

    コレクションを使用してドメインクラスにクエリを実行しても、期待される結果が得られないGrails

  23. 23

    SQL ISNULLチェックで正しい結果が得られない

  24. 24

    JavaでreadLine()を使用して期待する結果が得られない

  25. 25

    ノードjs、mongodbでpromiseinloopを使用して結果が得られない

  26. 26

    COALESCEを使用しても、SQLServerで目的の結果が得られない

  27. 27

    クエリで「GROUP_CONCAT」と「HAVING」を使用した場合、MySQLの結果をカウントするにはどうすればよいですか?

  28. 28

    このコードの何が問題になっていますか。常に結果0を出力します。phpmyadminで直接クエリを実行すると、正しい結果が得られます。

  29. 29

    SSISのパラメーターを使用した日付計算で正しい結果が得られない

ホットタグ

アーカイブ