相关疑难解决方法(0)

多线程评论PHP?

我有一个脚本,我写回来评论,但它只是单线程.我希望它是多线程的,但只有这样用户才能回复评论,而不是用户可以回复评论的评论.所以线程只有两个深度.

目前我储存comment_id反对user_id在我的数据库.

我能想到做多线程注释的唯一方法是parent在注释表中有一个字段.但是如果我这样做,那么当我用PHP选择注释时,我将不得不做另一个SELECT命令来为每个注释选择注释子项(如果有的话).好像在数据库上做了很多工作.

一定有更好的方法.有什么想法吗?还是教程?

php mysql sql comments hierarchical-data

7
推荐指数
1
解决办法
4704
查看次数

这些SQL闭包表示例有什么区别?

我在围绕SQL闭包表时遇到了一些困难,并希望在理解我找到的一些示例时提供一些帮助.

假设我有一个sample_items带有以下分层数据的表:

id   name                   parent_id
1    'Root level item #1'   0
2    'Child of ID 1'        1
3    'Child of ID 2'        2
4    'Root level item #2'   0
Run Code Online (Sandbox Code Playgroud)

树结构应该是这样的:

id
| - 1 
|   | - 2
|       | - 3
| - 4
Run Code Online (Sandbox Code Playgroud)

为了便于查询树(例如找到特定id的所有后代),我有一个表,sample_items_closure使用Bill Karwin在这个优秀的SO帖子中描述的方法.我还使用可选path_length列来在需要时查询直接子或父.如果我正确理解这个方法,我的闭包表数据将如下所示:

ancestor_id   descendant_id   path_length
1             1               0
2             2               0
1             2               1
3             3               0
2             3               1
1             3               2
4             4               0
Run Code Online (Sandbox Code Playgroud)

sample_items …

mysql tree recursion hierarchical-data transitive-closure-table

7
推荐指数
1
解决办法
1337
查看次数

如何在关系数据库中存储子项的链接树?

我有一个带有子节点(节点)的自定义LinkedTree,节点具有邻接关系,即每个节点与上一个节点和下一个节点链接.这个LinkedTree非常重,很大,可能包含数百万个节点.

这是一个代码示例:

package tree;

import java.io.Serializable;

public class LinkedTree<E> implements Serializable {

    private int size = 0;
    private Node<E> first;
    private Node<E> last;
    private LinkedTree<E> children;

    public LinkedTree() {
        children = new LinkedTree<>();
    }

    public LinkedTree(LinkedTree<E> children) {
        this.children = children;
    }

    public void add(E element) {

        final Node<E> l = last;
        final Node<E> newNode = new Node<>(l, element, null);
        last = newNode;
        if (l == null)
            first = newNode;
        else
            l.next = newNode;
        size++;
    }

    public void remove(E element) …
Run Code Online (Sandbox Code Playgroud)

java mysql database tree data-persistence

7
推荐指数
1
解决办法
267
查看次数

更新事物列表而不会访问每个条目

我在数据库中有一个用户应该能够订购的列表.

itemname|  order value (int)
--------+---------------------         
salad   |  1
mango   |  2
orange  |  3
apples  |  4
Run Code Online (Sandbox Code Playgroud)

从数据库加载,我只是order by order_value.

通过拖放,他应该能够移动apples,使其出现在列表的顶部..

itemname|  order value (int)
--------+---------------------         
apples  |  4
salad   |  1
mango   |  2
orange  |  3
Run Code Online (Sandbox Code Playgroud)

好.所以现在在内部我必须更新每个列表项目!如果列表有20或100个项目,那么对于简单的拖动操作来说,这是很多更新.

itemname|  order value (int)
--------+---------------------         
apples  |  1
salad   |  2
mango   |  3
orange  |  4
Run Code Online (Sandbox Code Playgroud)

我宁愿只做一次更新.我想到的一种方式是"内部订单"是否为double值.

itemname|  order value (double)
--------+---------------------         
salad   |  1.0
mango   |  2.0
orange  |  3.0
apples  | …
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-update

6
推荐指数
1
解决办法
827
查看次数

从数据库中获取节点树以进一步渲染的最佳实践是什么?

假设我们有一个包含用户评论的表格.第一级评论引用了他们所附的文章.更深层次的注释没有设计引用,但它们引用了它的父注释.

对于这个数据库结构 - 获取给定文章的所有注释然后以html格式呈现它的最有效方法是什么?(假设我们有大约200条第一级的评论和最深的20级评论)

mysql threaded-comments hierarchical-data

6
推荐指数
2
解决办法
2988
查看次数

如何有效地查询有向无环图

我在我的网络应用程序上使用mysql.应用程序表包含一个supervisor表和一个employee表.员工表包含有关每个员工的信息.主管表包含两列,如下所示.

supervisor_id -> which is employee id of the supervisor
subordinate_id -> which is the employee id of the subordinate. 
Run Code Online (Sandbox Code Playgroud)

每个下属可以有多个主管,一个主管下属可以是其他员工的主管.所以表格记录可以跟随.

supervisor_id | subordinate_id
1             | 2
1             | 3
2             | 4
4             | 5
3             | 6
3             | 4
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,有一个监督链.主管1有2个,3个,4个,5个和6个作为他的下属.主管2有4,5作为下属.而且它也可以为下属提供多个主管.

当我查询主管2的所有下属时,我现在使用如下的查询.

public function getSubordinate($id) {
 $query = "SELECT * FROM supervisor WHERE subordinate_id = $id";
 // get results and return
}
Run Code Online (Sandbox Code Playgroud)

所以我现在所做的是首先发送id为2以获得它的直接下属.然后,对于每个生成的下属,我一次又一次地运行查询以获得完整的下级链.

对于少量数据,这是可以的.但是这个主管表将有数千个数据,因此我必须进行数千次查询才能找到主管链,并且需要时间才能给出结果.

由于下属可以有多个主管,因此嵌套集不会是一个确切的答案.

我也经历过这个解决方案.http://www.codeproject.com/Articles/22824/A-Model-to-Represent-Directed-Acyclic-Graphs-DAG-o

但是当我使用这种方法时,它会有数百万的数据与该表.这是低效的.

我的问题是有任何有效的方法来做到这一点.我的表结构有什么问题阻止我有效地进行这种查询.

mysql directed-acyclic-graphs

6
推荐指数
1
解决办法
1662
查看次数

在MySQL中是否有`connect by`替代方案?

如果我使用Oracle connect by,则可以使用关键字来创建分层查询.目前我在一个项目上使用MySQL,我想知道connect by在MySQL中是否有替代品?

我试过google但到目前为止无济于事.我想要实现的是通过一个查询从数据库中获取树.涉及两个表:

areasarea_to_parent_join.后者包含两个ID area_id,另一个是parent_id.所以它基本上是一个自我连接,我可以使用该模型创建图形.事实上,它目前仅用于创建树木,但未来可能会发生变化.但在任何一种情况下,我想拥有的只是一棵生成树.

编辑: areas可能有超过1.000.000条记录,这使得大多数空间密集型选项变得不可行.

mysql sql oracle

6
推荐指数
1
解决办法
8701
查看次数

使用Java和SQLite的递归数据处理性能

如果您的答案与Java/SQLite无关,我很乐意阅读它.

环境

我使用以下方案将项目存储在数据库中:

###################
#       Item      #    
###################
#      _id        #    This is the primary key
#    parent_id    #    If set, it the ID of the item containing this item
#      date       #    An ordinary date
#  geocontext_id  #    Foreign key to a pair of named coordinates
###################

###################
#   Geocontext    #    
###################
#       _id       #    This is the primary key
#       name      #    Way for the user to label a pair of coordinates (e.g : "home", "work")
#         x …
Run Code Online (Sandbox Code Playgroud)

java sqlite recursion android

5
推荐指数
1
解决办法
2826
查看次数

使用递归来构建导航

我正在为一个站点构建导航,对于我的生活,我无法弄清楚递归.我使用这种设计通过MySQL存储了所有数据:

在此输入图像描述

我已经阅读了几个关于递归如何工作的链接,我一定很慢,因为我很难掌握.我试着写一些东西,我知道它甚至不是我真正需要的东西,但它是一个开始:

PDO

public function viewCategories()
{
    $viewSQL = "SELECT * FROM categories";  
    try
    {
        $pdo = new PDO('mysql:host=localhost;dbname=store','root','');
        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        $categoryVIEW = $pdo->prepare($viewSQL);
        $categoryVIEW->execute();
        $array = $categoryVIEW->fetchAll(PDO::FETCH_ASSOC);
        $categoryVIEW->closeCursor();
        $json = json_encode($array);
        return $json;
    }
    catch(PDOexception $e)
    {
        return $e->getMessage();
        exit();
    }
}
Run Code Online (Sandbox Code Playgroud)

递归

$return = json_decode($category->viewCategories(),true);

function buildNavigation($json)
{
    foreach($json as $item)
    {
        if($item['category_id'] === $item['parent'])
        {
            print('<li>'.$item['category_name'].'</li>');
            if($item['category_id'] === $item['parent'])
            {
                print('<li>match'.$item['category_name'].'</li>');
                buildNavigation($json);
            }
        }
}
buildNavigation($return);
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,这将永远不会进入.我确实试图通过自己来解决这个问题,因为知道这是一件好事,但我想这超出了我的心理能力:(

谢谢你看看:)

UPDATE

我知道这已经得到了解答,但有没有办法可以做到这一点来构建一个关联数组?我一直在玩一个ALMOST为我工作的功能,我从这里获得,但它增加了一个我不想要的额外数组.

方法

private function buildCategories($array,$parent)
{
    $result …
Run Code Online (Sandbox Code Playgroud)

php mysql recursion

5
推荐指数
1
解决办法
4422
查看次数

如何从DB中创建平面数组的嵌套注释数组

在查询数据库以查找嵌套在闭包表中的注释之后,比如Bill Karwin在这里建议什么是将平面表解析为树的最有效/优雅的方法?,我现在从SQL获得以下数据结构:

"comments": [
            {
                "id": "1",
                "breadcrumbs": "1",
                "body": "Bell pepper melon mung."
            },
            {
                "id": "2",
                "breadcrumbs": "1,2",
                "body": "Pea sprouts green bean."
            },
            {
                "id": "3",
                "breadcrumbs": "1,3",
                "body": "Komatsuna plantain spinach sorrel."
            },
            {
                "id": "4",
                "breadcrumbs": "1,2,4",
                "body": "Rock melon grape parsnip."
            },
            {
                "id": "5",
                "breadcrumbs": "5",
                "body": "Ricebean spring onion grape."
            },
            {
                "id": "6",
                "breadcrumbs": "5,6",
                "body": "Chestnut kohlrabi parsnip daikon."
            }
        ]
Run Code Online (Sandbox Code Playgroud)

使用PHP我想重构这个数据集,所以注释嵌套如下:

"comments": [
            {
                "id": "1",
                "breadcrumbs": …
Run Code Online (Sandbox Code Playgroud)

php sql arrays hierarchical-data

5
推荐指数
1
解决办法
391
查看次数