0

私はこのシナリオを持っています。

$groupid="1"; と入力します。

メインテーブル

----------------------
| groupid  |  postid  |
|---------------------|
|       1  |       1  |
|       2  |       2  |
|       1  |       3  |

$query = "SELECT postid FROM `mainl` WHERE groupid='$groupid'";
$result = mysql_query($query);

// a group of postids belonging to that groupid which should hold [1, 3] for groupid=1
while($row = mysql_fetch_array($result)) {
    $postids[] = $row["postid"];
}

2番目のテーブル

-------------------------------------------
|  postid  |  commentid  |     comment    |
-------------------------------------------
|       1  |          1  |   testing 1    |
|       1  |          2  |   testing 2    |
|       1  |          3  |       what?    |
|       2  |          1  |       hello    |
|       2  |          2  | hello world    |
|       3  |          1  |      test 3    |
|       3  |          2  |       begin    |
|       3  |          3  |        why?    |
|       3  |          4  |       shows    |


$query = "SELECT * FROM `second`";
$result = mysql_query($query);

while ($row = mysql_fetch_array($result)) {
    if (in_array($row["postid"], $postids)) {
        $comments[$row["postid"]] = $row["comment"];

しかし、コメント付きの処理をどのように行う必要がありますか?
postid 配列を[1,3]、コメント配列を [commentid: comment] [1:testing1, 2: testing2, 3: what?]forpostid=1
および
[1:test3, 2:begin, 3: why? 4:shows]forにしたいのです。postid=3

そのようなコメントがcommentidとpostidに関連付けられているすべてをどのように配置する必要がありますか?

4

2 に答える 2

1

最初にrokddの提案に従い、1つのクエリを作成します

SELECT  m.groupid , s.postid, s.commentid, s.comment FROM `main1` m JOIN `second` s USING (postid) where m.groupid = 1

次に、多次元配列を作成します

while ($row = mysql_fetch_array($result))
    $groups[$row['groupid'][$row['postid']][$row['commentid']=$row['comment'];

次に、配列を反復処理します

foreach($groups as $group)    
    foreach($group as $post)
        foreach($post as $comment)
           echo $comment;

これにより、グループも追跡されます(複数のグループで選択したい場合。グループを気にしない場合は、配列の最初の部分を削除してください。

while ($row = mysql_fetch_array($result))
    $posts[$row['postid']][$row['commentid']=$row['comment'];


    foreach($posts as $post)
        foreach($post as $comment)
           echo $comment;
于 2012-06-13T02:11:33.837 に答える
0

I guess to use the join in sql so that you will have one statement:

SELECT * FROM second as second_tab LEFT join main as main_table ON main_table.post_id=second_table.post_id WHERE main_table.group_id="3"

Well not tested now but thats a way to solve some of your problems!

于 2012-06-12T20:33:44.667 に答える