我有两个表userdatafile& user,其中我根据公共ID将两个表合并在一起,以查找附加到ID的相应工作,下面的PHP代码从用户那里检索了这些作品,因为我只想向每个用户显示一个工作,但是如果用户有2-3工作,它也会显示出不同的工作。
PHP
<?php
include 'dbAuthen.php';
$sql = 'SELECT * FROM userdatafiles JOIN users ON userdatafiles.UserID = users.UserID WHERE Specialisation = "Painting"';
$result = mysqli_query($con,$sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$links[] = array(
"links" => $row["Link"],
"caption" => $row["Name"],
);
}
shuffle($links);
echo json_encode($links);
} else {
echo "0 results";
}
?>如果我只上传了一个用户的作品,那么应该如何改进代码,这样如果一个用户有多个作品,那么它只会显示一个随机的工作吗?谢谢..
发布于 2014-11-19 06:31:27
使用DISTINCT消除重复的userid:
$sql = 'SELECT DISTINCT(users.UserID),name,link FROM userdatafiles JOIN users ON userdatafiles.UserID = users.UserID WHERE Specialisation = "Painting" ORDER BY RAND()';或按以下方式使用组:
$sql = 'SELECT users.UserID,name,link FROM userdatafiles JOIN users ON userdatafiles.UserID = users.UserID WHERE Specialisation = "Painting" GROUP BY UserID ORDER BY RAND()';发布于 2014-11-19 06:09:54
使用兰德()进行随机显示,并将限制设置为1,这样就可以得到一条随机记录
ORDER BY RAND() LIMIT 1因此,您的查询将是:
$sql = 'SELECT * FROM userdatafiles JOIN users ON userdatafiles.UserID = users.UserID WHERE Specialisation = "Painting" ORDER BY RAND() LIMIT 1';https://stackoverflow.com/questions/27010134
复制相似问题