繁体   English   中英

从同一表联接MySQL结果

[英]Joining MySQL results from the same table

我精通mySQL中的连接表,但是在连接SAME表中的结果时遇到了麻烦。 我正在PHP中创建一个文件夹结构,其中一个文件夹具有一个ID,一个父ID,一个随机字符串ID和一个标签。

我的数据库看起来像:

| id | parent_id | uniq   | label
---------------------------------
| 1  | 0         | w2d4f6 | dir 1
| 2  | 1         | h9k3h7 | dir 2

前端使用uniq var标识文件夹。 因此,在数据库中,您可以看到,如果我打开文件夹dir 1 ,则文件夹dir 2将位于其中,因为dir 2具有dir 1的ID作为其父目录。

还在我这儿?

|- dir 1
|  + dir 2 

文件夹dir 1由其uniq字符串标识,即w2d4f6 所以我想做的是:

  1. 获取具有uniq='w2d4f6'的记录的父ID
  2. 父ID是1
  3. 查找parent_id=1记录

我知道这是完全错误的,我认为我应该使用JOIN但是我尝试了以下操作而没有成功。

SELECT folders.label,folders.parent_id FROM folders WHERE folders.uniq='w2d4f6' AND folders.id=folders.parent_id

获取文件夹的子代:

select b.label, b.parent_id
from folders a, folders b
where a.uniq = 'w2d4f6' AND b.parent_id = a.id

如果您已经具有父数据,并且只想通过父数据的uniq值请求子数据,则此方法应该起作用:

SELECT label, parent_id FROM folders WHERE parent_id IN (SELECT id FROM folders WHERE uniq='w2d4f6')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM