从联合表php / mysql中选择

时间:2016-04-02 18:39:06

标签: php mysql

我想知道是否有人可以解释我曾经遇到过的mysql / php问题。

我有以下两张表。

表:Postedposts

|id          |textid      |modelid     |timeposted  |
|1           |2           |1           |0000-00-00 00:00:00|

表格:文字

|textid      |text        |
|2           |hello       |

我需要从表格Text中随机选择一个文本值,其中textid从未被插入到特定modelid的表格Postposts中。如果没有返回结果,我需要从表Text中随机选择一个文本值,其中textid尚未插入到过去7天内特定modelid的表Postposts中。

到目前为止,我对初始问题有以下代码,但我无法确定如何将其限制为特定的modelid。

$sql="
        select Text.textid,Text.text 
        from Text left join Postedposts on Text.textid = Postedposts.textid 
        where ((Postedposts.textid IS NULL)) ORDER BY RAND() LIMIT 1
";


$result=mysqli_query($conn,$sql);
$row=mysqli_fetch_assoc($result);
$text = $row['text'];

任何帮助都将不胜感激。

谢谢:)

1 个答案:

答案 0 :(得分:0)

如果有人想知道我最终用以下方法解决了这个问题:

$modelid = 1;
$minustime = date('Y-m-d H:i:s', strtotime('-7 days'));

$sql = "SELECT a.*
FROM Text a
LEFT JOIN Postedposts b
    ON a.textid = b.textid AND
       b.modelid = ".$modelid." 
AND b.timeposted > '".$minustime."'
WHERE (b.textid IS NULL) ORDER BY RAND() LIMIT 1";

$result = $conn->query($sql);
if ($result->num_rows > 0) {

while($row = $result->fetch_assoc()) {

$text = $row['text'];

echo "<br><br>".$text;

}

}
else
{
echo "no rows";
}

请告诉我是否/如何改进? 感谢