php - 如何根据第一个表匹配获取第二个和第三个表的数据

标签 php mysql sql arrays

这可能是一个基于此的连续问题

Get info from two tables in database where id match an array?

在上面问题的回答中,我问了如何根据json文件匹配两个表的数据。

好人在他的示例中很好地解释了如何将 json 数据存储在数组中并仅查询数据库一次,这比我使用 foreach 的尝试要快得多。

这效果很好。

好吧,由于 json 文件有时是从其他网站提取的,因此由于 json 文件,加载页面需要更多时间,所以我决定将 json 数组记录到我自己的数据库中并从那里提取它,这将使网站加载更多快点。

但我仍然处于通过 mysql 的学习曲线上,不知道如何解决更复杂的事情

这是我的试用

    $gamesquery = mysqli_query($conn, 
            "SELECT steamgames 
            FROM members 
            WHERE steamID='$steam64id'");
    $data = mysqli_fetch_array($gamesquery);
    $gameslist = $data['steamgames'];

    $querygamename = mysqli_query($conn, 
            "SELECT sc_steamgames.*, sc_steamgameprices.* 
            FROM sc_steamgames 
            LEFT JOIN sc_steamgameprices on (sc_steamgames.appid=sc_steamgameprices.appid) 
            WHERE sc_steamgames.appid IN ($gameslist) 
            ORDER BY title");

这是可行的,但是否可以仅通过一个查询来实现?

最佳答案

如果steamgames是逗号分隔的,你可以这样做:

SELECT sc_steamgames.*, sc_steamgameprices.* 
            FROM sc_steamgames 
            LEFT JOIN sc_steamgameprices on (sc_steamgames.appid=sc_steamgameprices.appid) 
            WHERE FIND_IN_SET(sc_steamgames.appid,(
                SELECT steamgames 
                FROM members 
                WHERE steamID='$steam64id'))
            ORDER BY title

关于php - 如何根据第一个表匹配获取第二个和第三个表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19329422/

相关文章:

java - ResultSet.TypeForwardOnly 和 Result Set.Type Scrollable 之间的区别

mysql - SQL,其中列不是一对多关系中一对一的值

php - HTML/PHP - 默认输入值

php - Mac 上的代客安装 - 无法重新声明

如果电子邮件无效,PHPMailer 不发送

php - 下拉问题中的房间数量

sql - Oracle SQL 中的 OR 条件

sql - 超过 1 列的 string_agg 的唯一值

sql - 连接两个表,只使用右表的最新值

php - 节点中内容的 XPath 表达式,直到遇到带有字符串的节点