0

わかりましたので、テーブルの設定とクエリに関しては基本的に初心者です...しかし、私のタイトルは、私がやろうとしていることをかなりうまく説明していると思いますJOIN.私の人生では、それを行う方法を正確に理解することはできません(SOに関するいくつかの例とWeb上のチュートリアルを読みましたが、頭を包み込むことができませんでした)。基本的に、userFollowsSeries3つの列を持つテーブルがあります

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

もう 1 つのテーブル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 
     }
 }

今、これは理想的ではなく、あまり効率的ではないことに気付きましたが、これをすべて1つのステートメント/クエリで行う方法を理解できませんJOIN。私が持っているものはすべて動作しますが、本当に遅いです (おそらく while ループに埋め込まれたクエリのため)。とにかく、これを改善するための結合または新しいテーブル構造がどのように素晴らしく、非常に高く評価されるかについて私を助けることができます.

4

3 に答える 3

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 に答える