Php 如何将2个mysql查询合并到一个表中

Php 如何将2个mysql查询合并到一个表中,php,mysql,sql,database,Php,Mysql,Sql,Database,例如,我有一张桌子 catid | parentcatid | dirname 4 | 0 | mobiles 243 | 4 | Nokia 当我得到catid=243时,我需要使用mysql\u查询(catid=parentcatid) 我可以先选择catid、parentcatid和dirname其中id=243,然后选择相同的parentcatid=catid,但是 如何进行此单一查询?将表连接两次: SELECT t2.cat

例如,我有一张桌子

catid | parentcatid | dirname
  4   |      0      | mobiles 
 243  |      4      | Nokia
当我得到
catid=243
时,我需要使用
mysql\u查询(catid=parentcatid)

我可以先选择
catid
parentcatid
dirname
其中
id=243
,然后选择相同的
parentcatid=catid
,但是


如何进行此单一查询?
将表连接两次:

SELECT
  t2.catid, t1.dirname 'dirname', t2.dirname 'parentname'
FROM Tablename t1
INNER JOIN Tablename t2 ON t1.catid = t2.parentcatid
WHERE t2.catid = 243;
这将为您提供:

| CATID | DIRNAME | PARENTNAME |
--------------------------------
|   243 | mobiles |      Nokia |
使用自联接:

SELECT parent.catid, parent.dirname
FROM yourtable AS parent
LEFT JOIN yourtable AS child ON (child.parentcatid = parent.catid)
WHERE child.catid = 243

你问题的字面答案是使用自连接(正如Marc B所建议的)

从字里行间看,我假设你事先不知道你的层次结构有多深——这使得自连接不那么有用,因为如果你必须继续连接以获得更深层次的树,如果不是树的所有部分都达到相同的深度,你可能需要使用外部连接


另一种方法——要复杂得多,而且只有在我的假设成立的情况下才这样做——是将数据表示为一个数据集

为什么不读一些书呢?这不是一个很有建设性的评论@BogdanBurim。这个问题问得很好,如果你从未使用过Join,搜索起来就不容易。我知道Join,不多,所以不想浪费一个小时来进行我需要的查询,所以请各位帮助我更快。感谢文章,我的树只有两个级别:)
SELECT parent.catid, parent.dirname
FROM yourtable AS parent
LEFT JOIN yourtable AS child ON (child.parentcatid = parent.catid)
WHERE child.catid = 243