我如何在一个或两个查询中比较结果?

时间:2016-07-21 20:34:58

标签: php mysql sql smf

我正在尝试从smf数据库中获取最后10个主题,但主题在两个单独的表中。

Subject, Post Time and Message ID in smf_messages.
Topic ID and Topic First Message in smf_topics.

我写了这段代码来获取主题,但我不知道如何比较这两个结果。

$result = mysql_query("select subject,id_msg,id_topic from smf_messages");
$result2= mysql_query("select id_first_msg from smf_topics");
if(mysql_num_rows($result)!=0)
{
    while($read = mysql_fetch_object($result))
    {
        if ($read->id_msg==$read->id_topic) {
            echo "<a href='../index.php?topic=" . $read->id_topic . "'>".$read->subject."</a><br>";
        }
    }

4 个答案:

答案 0 :(得分:0)

您可能需要以下查询

select subject, id_msg, id_topic, id_first_msg
from smf_messages
left join smf_topics on smf_message.id_msg = smf_topics.id_first_msg

答案 1 :(得分:0)

通过加入sql来绑定记录:
select subject id_msg, id_topic, id_first_msg from smf_messages join smf_topics on smf_messages.id_msg = smf_topics.id_topic

答案 2 :(得分:0)

mysql有很多选项,你可以找到关于left join的小搜索。 tuttorial and examples

你需要做的就是停止使用mysql_ *并开始使用mysqli_ *或pdo了解sql injections

您的查询应如下所示。

select smf_messages.subject,smf_messages.id_msg,smf_messages.id_topic from smf_messages left join smf_topics on smf_topics.id_first_msg=smf_messages.id_msg

答案 3 :(得分:0)

如果你想在不使用SQL的情况下这样做,这是我的解决方案,它不是很好,但你可以知道它是如何工作的:

$messages = array();
$topics = array();

while($readmessage = mysql_fetch_object($resultmessage)) {
    array_push($messages, $readmessage);
}
while($readtopic = mysql_fetch_object($resulttopic)) {
    array_push($topics, $readtopic);
}

foreach ($topics as $topic) {
    $result = array_search($topic->id_first_message);
    if($result != true){
        //HERE $result IS THE INDEX OF FIRST MESSAGE IF IT IS IN THE MESSAGES ARRAY
        $messages[$result].id_msg //Access message attributes
    }
}
相关问题