Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从第二个查询或功能联接查询排序_Php_Sorting_Join_Pdo - Fatal编程技术网

Php 从第二个查询或功能联接查询排序

Php 从第二个查询或功能联接查询排序,php,sorting,join,pdo,Php,Sorting,Join,Pdo,我当前有一个需要显示的表,如下所示: 但正如您所看到的,它并没有按“已删除的金额”(代码中名为$amount和amount)排序 我首先需要收集名字并从表中删除id。是这样做的: //----------------FETCH ALL CONTENTS FROM DROPTABLE TO DISPLAY DROPS------------\\ $query = "SELECT * FROM droptable WHERE boss_id = ". $boss .""; $stmt = $p

我当前有一个需要显示的表,如下所示:

但正如您所看到的,它并没有按“已删除的金额”(代码中名为$amount和amount)排序 我首先需要收集名字并从表中删除id。是这样做的:

//----------------FETCH ALL CONTENTS FROM DROPTABLE TO DISPLAY DROPS------------\\

$query = "SELECT * FROM droptable
WHERE boss_id = ". $boss ."";

$stmt = $pdo->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach($result as $row){
    $drop_id = $row['drop_id'];
    $drop = $row['dropname'];
    $boss_id = $row['boss_id'];

    $picture = $row['picture'];
这将获取drop的名称(dropname)。它的id(drop_id)、boss id(boss_id)和图片(picture)。 然后,它会继续检查我是否记录过老板从另一张桌子上掉下来的信息:

//----------------FETCH ALL LOGGED DROPS FOR DISPLAYING AMOUNT------------\\
        $query1 = "SELECT * FROM dropcounter
        WHERE boss_id = ". $boss ." AND userid = ". $user ." AND drop_id = ". $drop_id ."";

        $stmt1 = $pdo->prepare($query1);
        $stmt1->execute();
        $result1 = $stmt1->fetchAll(PDO::FETCH_ASSOC);

        echo "<tr>";
          echo "<td><img src='../images/". $picture ."'</td>";
          echo "<td>". $drop . "</td>";
          echo "<td>". $amount ."</td>";    
          echo "<td>". $percent ."</td>";
          echo "<form action='logger.php' method='post'>";
          echo "<td><input type='hidden' value=". $drop_id ." name='drop_id'>";
          echo "<input type='hidden' value=". $boss_id ." name='boss_id'>";
          echo "<input type='hidden' value=". $user ." name='user'>";
          echo "<input type='submit' value='Add'></td>";
        echo "</tr>";
        echo "</form>";
以下是我桌上的结构: DROPCOUNTER表:

这是DROPTABLE表格:

如果有人能帮我做任何一件事,我将非常高兴你的好意


如果有人想试试的话,这里有一把小提琴。我导入了一些示例数据:

您试图在JOIN语句中使用:

dropcounter.username = ". $user ."
其中包含两个错误: 1.该表中没有字段用户名 2.您没有在“”中包含字符串

将其更改为
dropcounter.userid

另外,您不需要选择droptable.drop_id和droptable.boss_id,因为它已经从dropcounter表中选择

编辑:根据您的小提琴:

SELECT dropcounter.drop_id, dropcounter.boss_id, dropcounter.userid, dropcounter.amount,    droptable.dropname
FROM droptable
JOIN dropcounter
ON droptable.boss_id = dropcounter.boss_id
WHERE dropcounter.drop_id = droptable.drop_id AND droptable.boss_id = 1 AND dropcounter.userid = 1
ORDER BY dropcounter.amount DESC;

它可以正常工作和排序。

如果要从
droptable
中获取在
dropcounter
中不匹配的行,则需要使用
左联接。所有引用
dropcounter
的测试必须在
ON
子句中,否则空匹配将导致测试失败,这些行将被过滤掉

SELECT dc.add_date, dc.username, IFNULL(dc.amount, 0) amount, dt.drop_id, dt.dropname, dt.boss_id, dt.wiki_link, dt.picture
FROM droptable dt
LEFT JOIN dropcounter dc
ON dt.boss_id = dc.boss_id AND dc.drop_id = dt.drop_id AND dc.userid = $user
WHERE dt.boss_id = $boss
ORDER BY amount

您的第二个代码对
$result1
没有任何作用。我认为该连接应该可以工作。您可以添加
dropcounter
表格内容吗?你能用样本数据做一个SQLFIDLE吗?@Barmar第二个代码确实对它做了一些事情。但是我没有包括它,因为它只是把所有的东西都分配给变量。什么是sqlfiddle?我还添加了DropCounterQLFidle的内容是sqlfiddle.com,这是一个公共网站,允许您创建SQL示例并与其他人共享。有一些示例数据可供使用。我从那以后更改了表格。用户名现在是userid。它是封闭的吗?“$user.”用户名建议它是VARCHAR字段,您需要将该类型的值括在“”中。到底什么意思是“这是不起作用的连接代码?”?是的。join语句。那代码不起作用。它在三天内没有给我想要的结果,所以我停止更新编辑后的答案,并根据你的小提琴添加了加入选择。
SELECT dc.add_date, dc.username, IFNULL(dc.amount, 0) amount, dt.drop_id, dt.dropname, dt.boss_id, dt.wiki_link, dt.picture
FROM droptable dt
LEFT JOIN dropcounter dc
ON dt.boss_id = dc.boss_id AND dc.drop_id = dt.drop_id AND dc.userid = $user
WHERE dt.boss_id = $boss
ORDER BY amount