0

我有一个查询,我正在使用在 3 个不同区域显示结果的位置。我不想设置限制的区域之一,其中两个我想将它们限制为一个。我正在考虑在这两个特定领域的 foreach 中我可以在那里添加限制。我只是不确定该怎么做,如果这是最好的方法。

这是我的查询:

$comments_query = "SELECT * FROM airwaves_comments aw,users u WHERE u.id=aw.from_id AND aw.FROM_id=aw.to_id AND aw.from_id=".$profile_id." order by aw.created_on desc" ;

这是在我不想要限制的地方显示的结果。

if ($airwave)
 {
 foreach ($airwave as $airwave_comment_row)
 {
// stuff
}
}

以下是显示的结果,我想限制为一个:

if ($airwave && $profile_id == $session_id)
            {
                foreach ($airwave as $airwave_comment_row)
                {
                    echo "<div id='profile_airwave'>";
                    echo $airwave_comment_row['comment'];
                    echo "<br />";
                    echo "<span class='profile_airwave_info'>"; 
                    echo $airwave_comment_row['created_on'];
                    echo "</span>";
                    echo "</div>";
                }
}

这是否可能,让他们共享相同的查询?还是我必须编写一个新查询?

谢谢

4

2 回答 2

1

您可以像这样更改您的查询,

$comments_query = "SELECT * FROM airwaves_comments aw,users u WHERE u.id=aw.from_id AND aw.FROM_id=aw.to_id AND aw.from_id=".$profile_id." order by aw.created_on desc" ;
if($profile_id == $session_id){
$comments_query .= " LIMIT 0,1"
}

或者 您可以尝试使用与您相同的逻辑

    if ($airwave && $profile_id == $session_id)
         $airwave_comment_row = $airwave[0];
         // takes the first row
    }else if($airwave){
    foreach ($airwave as $airwave_comment_row)
       {
        // stuff
       }
   }
于 2013-05-31T19:00:27.820 回答
0

认为您可以使用UNION查询,但您需要检查这是否是最好的方法 - 如果它有效。

我会检查,但我目前无权访问 MySQL 服务器。

(SELECT * FROM table WHERE category = 1)
UNION
(SELECT * FROM table WHERE category = 2 LIMIT 10)
UNION
(SELECT * FROM table WHERE category = 3)

安东尼。

于 2013-05-31T18:51:40.040 回答