0

好的,所以在设置表格和查询表格方面,我基本上是个菜鸟......但我认为我的标题解释了我正在努力做的事情,我相信我正在寻找一种方法来使用JOIN但对于我的生活,我无法弄清楚到底该怎么做(我已经阅读了一些关于 SO 的示例和网络上的教程,但我无法理解它)。基本上我有一个名为的表userFollowsSeries,它有三列

 | userID | seriesID | series_title |
 ------------------------------------
 |   int  |  int     |    var_char  |

还有另一个表series,它有一个主键seriesID和一堆关于该系列的相关信息。现在我想series为每个 seriesID用户获取表中的所有信息。

现在我基本上试图让每个都seriesID基于这样的userID单曲

$userFollows = mysqli_query($con, "SELECT * FROM userFollowsSeries WHERE userID='$user_id'") or die(mysql_error());
while($follows = mysqli_fetch_array($userFollows)){
    $show_id=$follows['seriesID'];
    echo $show_id;  //this is realy just here for testing 
    $result = mysqli_query($con, "SELECT * FROM series WHERE id='$show_id'") or die(mysql_error());

    while($row = mysqli_fetch_array($result)){
          // i get and print out everything in a formatted for my html code 
     }
 }

现在我意识到这不太理想并且效率不高,但无法弄清楚如何在一个语句/查询中完成所有这些操作,我再次假设某种JOIN语句。我拥有的所有东西都可以工作,但速度真的很慢(可能是因为嵌入在 while 循环中的查询)。无论如何,您可以帮助我解决如何通过连接或新表结构来改进这一点,这将是非常棒的,非常感谢。

4

3 回答 3

1

类似的东西SELECT * FROM `series` WHERE `id` IN (SELECT `SeriesID` FROM `userFollowsSeries` WHERE `userID`=$user_id)应该可以很好地工作。请注意,它可能无法很好地利用索引。最好选择 ID,构建它们的数组,然后使用 IN 和 implode 加入数组。

于 2013-05-25T01:24:24.113 回答
0

JOIN 基本上将两个表粘合在一个列上。以此为例:

SELECT * FROM userFollowsSeries INNER JOIN series ON (userFollowsSeries.seriesID = series.seriesID)

实际上,我们在这里所做的是从 userFollowsSeries 中选择所有内容,然后为每条记录附加序列表中满足 ON 子句中条件的行。

于 2013-05-25T01:23:52.403 回答
0

您的查询应该是

SELECT s.* 
FROM userFollowsSeries ufs
    INNER JOIN series s
        ON s.id = ufs.seriesID
    WHERE ufs.userID = {$user_id}

并且您应该在表 userFollowsSeries 的字段 seriesID 上创建一个外键或索引。

于 2013-05-25T02:24:58.817 回答