2014-09-25 20 views
0

目前我有一个非常基本的SQL查询,但是我想扩展它以便获取它所引用的ID的名称。问题是,它是一个Parent> Child关系表。父项和子项是同一个表的一部分,但行数不同。我想展开一个SQL查询来获取它正在选择的ID的名称。我怎么做?

$GetRelations = " 
    SELECT RelationUID, BlockTypeUID, ChildBlockUID, Weight FROM block_type_relations 
    WHERE BlockTypeUID = '$BlockTypeUID' 
    "; 

当我只有一个BlockTypeUID最初获取的记录,我怎么能转移此查询各地也使其会针对这两个BlockTypeUID和ChildBlockUID表block_types的名字?我在mySQLi中写这个。

+0

如果我理解你所追求的正确,这听起来像你需要在block_types加盟表。或者,做一个子选择(这可能更容易管理,因为您不止一次地引用表) – GrandmasterB 2014-09-25 06:22:58

回答

0

假设名字是在一个名为“姓名”一栏,查询可能看起来像这样

$GetRelations = " 
SELECT a.RelationUID, a.BlockTypeUID, a.ChildBlockUID, a.Weight 
    b.NAME AS BlockTypeName, c.NAME AS ChildBlockName 
FROM block_type_relations a 
INNER JOIN block_types b ON b.ID = a.BlockTypeUID 
INNER JOIN block_types c ON c.ID = a.CildBlockUID 
WHERE a.BlockTypeUID = '$BlockTypeUID' 
"; 
+0

这实际上效果最好。我必须修改它以匹配我精确的表结构,但它会返回我需要的所有内容,现在我有一个示例来构建未来的查询。在我看来,如果有人能够学习,提供示例解决方案没有任何问题。 – Merlin 2014-09-25 13:07:40

0
$GetRelations = "SELECT btr.RelationUID, btr.BlockTypeUID, btr.ChildBlockUID, 
    btr.Weight,bt.Name FROM block_type_relations btr 
    INNER JOIN block_types bt ON bt.BlockTypeUID =btr.BlockTypeUID 
    WHERE BlockTypeUID = '$BlockTypeUID'"; 
+0

只是提供一个解决方案并不能帮助任何人学习 – Luke 2014-09-25 08:17:19

+0

我无法理解你的评论@ Doctus – 2014-09-25 08:19:13

+0

Hiya,这可能很好的解决了这个问题......但是如果你能够编辑你的答案并提供一个关于如何和为什么它的工作原理的小解释:)不要忘记 - Stack堆栈中有大量新手,他们可以从你的专业知识中学到一两件事 - 对你来说显然对他们来说可能不是那么重要。 – 2014-09-25 08:33:58

相关问题