我想知道是否有人可以解释我曾经遇到过的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'];
任何帮助都将不胜感激。
谢谢:)
答案 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";
}
请告诉我是否/如何改进? 感谢