Php 将sql语句组合成单个语句

Php 将sql语句组合成单个语句,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,我有四张桌子,分别是A、B、C、D “D”有两列“id”和“Cid” “C”有两列“id”和“Bid” “B”有两列“id”和“Aid” 如果我想得到“Cid”,我会从D中选择Cid,其中id=我输入的值“ 如果我想获得“Bid”,我会选择“Bid from C,其中id=来自上述查询的Cid结果” 如果我想获得“Aid”,我会选择“Aid from B,其中id=结果是来自上述查询的Bid” 如您所见,这些表相互关联 如何通过组合上述SQL语句直接获得“Aid”;如何在单个SQL语句中获得“A

我有四张桌子,分别是A、B、C、D

“D”有两列“id”和“Cid”

“C”有两列“id”和“Bid”

“B”有两列“id”和“Aid”

如果我想得到“Cid”,我会从D中选择Cid,其中id=我输入的值“

如果我想获得“Bid”,我会选择“Bid from C,其中id=来自上述查询的Cid结果”

如果我想获得“Aid”,我会选择“Aid from B,其中id=结果是来自上述查询的Bid”

如您所见,这些表相互关联


如何通过组合上述SQL语句直接获得“Aid”;如何在单个SQL语句中获得“Aid”?

首先将其设置为一个表

然后读一些方法

试试看

    select tb.Aid
      from D td
inner join C tc ON ( tc.id = td.Cid )
inner join B tb ON ( tb.id = tc.Bid )
     where d.id = :value
         ;

当您开始使用联接时,您的关系结构将变得非常有用:

SELECT A.id
FROM D
JOIN C ON D.Cid = C.id
JOIN B on C.Bid = B.id
JOIN A on B.Aid = A.id
WHERE D.id = 'foo';

可能的重复我从不理解为什么人们在完全不必要的查询中使用别名表。这只会增加噪音,不是吗?有时候,它可能非常有用,但在这种情况下,您的查询将更容易阅读(IMO)w/o.@Madbreaks:这是一种习惯。经验(至少我的经验)表明,在维护查询时,无论如何都需要别名。与您的印象相反,imho使用别名也会使查询更具可读性,特别是当不同的表具有相同名称的列时,甚至在技术上不需要消除歧义的情况下。当然是ymmv。谢谢你的回复,我当然能理解你的观点。