1

私は2つのテーブルを持っています:

1) game_follower (どのユーザーがどのゲームをフォローしているかを保存します):

___________________________
| ID  | game_id | user_id |
| 1   |  1      |  1      |
| 2   |  2      |  1      |

2) 動画:

__________________________________
| ID  | game_id | content | data |
| 1   |  2      |  blah   | blah |
| 2   |  1      |  blah   | blah |

Twitter スタイルのフォロー システムを実装しようとしていますが、次のようなクエリを作成するのに問題があります。

  • 複数のgame_idを選択 WHERE user_id = "1"
  • その game_ids のリストから、game_id = (最初のクエリから選択された複数のゲーム ID) であるビデオから選択します。

個別のクエリで実行できますが、複数のクエリを使用するとパフォーマンスが低下すると言われました。1 つのクエリでこれを行うにはどうすればよいですか?

4

3 に答える 3

3

これを試して

SELECT v.game_id
FROM videos v
INNER JOIN game_follower gf ON gf.game_id = v.game_id
WHERE gf.user_id = 1
于 2012-07-21T14:12:51.147 に答える
1

1 つのクエリでこれを行うには、 JOINを調べる必要があります (データを個別にフェッチする場合と比較して、速度が大幅に向上します)。

于 2012-07-21T14:13:56.710 に答える
1
$conn = new PDO(CONNECTION_DETAILS, $username, $pass);
$variable = 1;
$sql = "SELECT game_follower.game_id FROM game_follower ";
$sql .= "INNER JOIN videos ";
$sql .= "ON game_follower.game_id = videos.game_id ";
$sql .= "WHERE game_follower.user_id = :id";
$query = $conn->prepare($sql);
$query->bindParam(':id', $variable, PDO::PARAM_INT);
$query->execute();

そんな感じ?

于 2012-07-21T14:14:52.263 に答える