Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 如何对mysql数据库中的select进行完美排序_Php_Mysql_Sql_Fork_Pid - Fatal编程技术网

Php 如何对mysql数据库中的select进行完美排序

Php 如何对mysql数据库中的select进行完美排序,php,mysql,sql,fork,pid,Php,Mysql,Sql,Fork,Pid,我的问题是从Mysql数据库中提取数据 在我的数据库中,我有来自计算机的库存过程。 下面是我的数据库中的一个行示例 ID CMD PID PPID 1000 /usr/sbin/httpd 9260 12600 1001 /usr/sbin/httpd 9261 12600 1002 /usr/sbin/httpd 9262 12600 1003 /usr/sbin/httpd 92

我的问题是从Mysql数据库中提取数据

在我的数据库中,我有来自计算机的库存过程。 下面是我的数据库中的一个行示例

ID      CMD                PID     PPID
1000    /usr/sbin/httpd    9260    12600
1001    /usr/sbin/httpd    9261    12600
1002    /usr/sbin/httpd    9262    12600
1003    /usr/sbin/httpd    9263    12600
1004    /usr/sbin/httpd    12600    50
好的,我只想选择行:

1004    /usr/sbin/httpd    12600    50
实际上,我的PHP代码选择了5行

但是现在我想在它们之间放置一个php代码来选择CMD,它不是由父进程创建的。 在这个例子中,PPID50行是好的,她的父进程不在这里

我真的不知道我能做什么,但这就是我的例子

SELECT ID, CMD
WHERE cmd LIKE %httpd% AND IF ppid IS NOT EQUAL TO OTHER ppid WHICH HAVE THE SAME cmd;
我希望你能帮助我。 很抱歉,我的问题很复杂,我不擅长解释。

尝试如下:

SELECT ID, CMD WHERE cmd LIKE '%httpd%' GROUP BY cmd;
SELECT i.ID, i.CMD,iPID,i.PPID from inventory i,inventory j WHERE i.PID <> j.PPID
试着这样做:

SELECT ID, CMD WHERE cmd LIKE '%httpd%' GROUP BY cmd;
SELECT i.ID, i.CMD,iPID,i.PPID from inventory i,inventory j WHERE i.PID <> j.PPID
像这样的

SELECT ID, CMD
WHERE cmd LIKE %httpd%
GROUP BY ppid
HAVING COUNT(ppid) = 1
像这样的

SELECT ID, CMD
WHERE cmd LIKE %httpd%
GROUP BY ppid
HAVING COUNT(ppid) = 1

像这样对表进行自联接:

SELECT ID, CMD WHERE cmd LIKE '%httpd%' GROUP BY cmd;
SELECT i.ID, i.CMD,iPID,i.PPID from inventory i,inventory j WHERE i.PID <> j.PPID
从清单i、清单j中选择i.ID、i.CMD、iPID、i.PPID,其中i.PID j.PPID

在上面的示例中,
inventory
是表名(假设)。

对表进行如下自联接:

SELECT ID, CMD WHERE cmd LIKE '%httpd%' GROUP BY cmd;
SELECT i.ID, i.CMD,iPID,i.PPID from inventory i,inventory j WHERE i.PID <> j.PPID
从清单i、清单j中选择i.ID、i.CMD、iPID、i.PPID,其中i.PID j.PPID

在上面的示例中,
inventory
是表名(假设)。

您必须找到库存中没有父项的项目。要执行此操作,必须对具有父项的项执行子查询。这应该能奏效。这也解释了独生子女的可能性

SELECT i.*
FROM Inventory i
LEFT JOIN
  (-- with parents in Inventory
  SELECT k.PID
  FROM Inventory j
  JOIN Inventory k ON k.PPID = j.PID) l ON l.PID = i.PID
WHERE l.PID IS NULL

请参见

您必须在库存中找到没有父项的项目。要执行此操作,必须对具有父项的项执行子查询。这应该能奏效。这也解释了独生子女的可能性

SELECT i.*
FROM Inventory i
LEFT JOIN
  (-- with parents in Inventory
  SELECT k.PID
  FROM Inventory j
  JOIN Inventory k ON k.PPID = j.PID) l ON l.PID = i.PID
WHERE l.PID IS NULL


请看

请解释更多…50不是家长流程吗?@Anubhav抱歉,我真的不擅长解释这一点,因为这对我来说太复杂了:s@tofuhim是的,50是httpd的父进程,在某些情况下,父进程(PPID)是1,因为它是INIT,而在另一些时候,我们得到了inception。。。fork还需要考虑您有一个子实例的可能性,例如,(1005,'/usr/sbin/httpd',50,77);请解释更多…50不是家长流程吗?@Anubhav抱歉,我真的不擅长解释,因为这对我来说太复杂了:s@tofuhim是的,50是httpd的父进程,在某些情况下,父进程(PPID)是1,因为它是INIT,而在另一些时候,我们得到了inception。。。fork还需要考虑您有一个子实例的可能性,例如,(1005,'/usr/sbin/httpd',50,77);如果只有一个子进程呢?谢谢,你和@Suresh Kamrushi很快就得到了一个很好的答案,你(也)能解释一下这个“ppid分组”…@Arlaud Pierre和“拥有计数(ppid)”是如何工作的吗=1不起作用。@user3114471谷歌上的第一个链接:如果只有一个子进程怎么办?谢谢,你和@Suresh Kamrushi很快就得到了一个很好的答案,你(也)能解释一下这个“按ppid分组”是如何工作的吗?@Arlaud Pierre with“HAVING COUNT”(ppid)=1它不起作用。@user3114471谷歌上的第一个链接:我不知道你怎么做这个魔法,但它起作用了。你能给我解释一下吗?我不知道你是怎么制作这个魔法的,但它起作用了。你能给我解释一下吗?我不认为这完全符合你的想法-尽管我认为它在正确的轨道上。我不认为这完全符合你的想法-尽管我认为它在正确的轨道上。