gpt4 book ai didi

MYSQL 查询 - 在Where子句中使用Select语句

转载 作者:行者123 更新时间:2023-11-29 18:05:08 26 4
gpt4 key购买 nike

目标:获取与用户喜欢的标签匹配的所有视频(球队和球员)...

我有四张 table 。

我需要从 user_player_tracker 表中获取用户的所有玩家

我需要从 user_team_tracker 表中获取用户的所有团队

我需要从 user_video_tags 表中查找用户球员或用户球队所在的所有标签

我最终需要获取 id 和 video_url,其中 user_video_tags video_id 是 user_videos 中的 id

我不知道如何做到这一切,这是我到目前为止所拥有的......

SELECT v.id, v.video_url FROM user_videos v
LEFT JOIN user_video_tags t
ON t.video_id = v.id
WHERE (
SELECT t.video_id FROM user_video_tags t
LEFT JOIN user_player_tracker up
ON up.site_id = t.site_id AND up.player_id = t.player_id
WHERE up.user_id = {$userid} )
|| (
SELECT t.video_id FROM user_video_tags t
LEFT JOIN user_team_tracker ut
ON ut.site_id = t.site_id AND ut.team_id = t.player_id
WHERE ut.user_id = {$userid} )

最佳答案

答案是我必须分两步完成此操作。首先,使用 Union 获取所有标记的视频。我使用“group by”来避免在每个查询中出现任何重复项,并且使用“union”而不是“union all”从组合结果中获取了所有唯一的 video_id。我使用 php arsort($results) 订购了视频列表,因为我不知道如何在 mysql 语句中使用 group by 和 union 来订购。之后,我只需循环遍历每个结果即可获取每个标签的视频。

    $results = $wpdb->get_results("
SELECT t.video_id FROM user_video_tags t
LEFT JOIN user_player_tracker up
ON up.site_id = t.site_id AND up.player_id = t.player_id
WHERE up.user_id = {$userid}
GROUP BY t.video_id
UNION
SELECT t.video_id FROM user_video_tags t
LEFT JOIN user_team_tracker up
ON up.site_id = t.site_id AND up.team_id = t.team_id
WHERE up.user_id = {$userid}
GROUP BY t.video_id
LIMIT 20");

arsort($results);

if($results){
foreach ($results as $item) {
// call another function that gets the video
$html .= get_media($item->video_id);
}
} else {
$html .= 'No videos found for this user, wEird.<br/>';
}

关于MYSQL 查询 - 在Where子句中使用Select语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47940473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com