从左边加一行

时间:2017-10-26 13:47:21

标签: mysql

标题可能不好,但我找不到更好的简短说明。

这些是我正在使用的表格:

Table Objects:

ID
NAME

Table Geo:

ID
NAME
PARENT_ID (int)
IDENTIFIER (varchar)

Table ObjectsGeo:

ID
OBJECT_ID
GEO_ID

所以我在"对象":

中插入了一些数据
insert into objects values(1,'Jack');   
insert into objects values(2,'Penny');  

然后在" geo":

insert into geo values(1,'USA', null, '001');   
insert into geo values(2,'New York', 1, '1001');    
insert into geo values(3,'England', null, '002');   
insert into geo values(4,'London', 3, '1002');  

如果杰克住在纽约,那么我会这样插入:

insert into ObjectsGeo values(1,1,1);   
insert into ObjectsGeo values(2,1,2);   

如果你告诉我这是一个糟糕的数据库设计,我会同意(其他人编码)。但是,这就是我现在所拥有的,并且在设计中进行更改可能会很复杂/导致其他地方出现错误。

现在,当我需要从数据库中获取Jack时,因为我也想知道他住在哪里,我做了一些非常丑陋的事情,即左边的连接还包括" ObjectsGeo"。然后我只采取第一行(叹气)和"手动"用编程代码将城市和国家放在对象中。 有没有办法只用一个查询来获取Jack的行,包括2个字段,一个用于国家,一个用于城市?

---- ---- EDIT 这些表或多或少是伪代码。查询本身(也作为伪代码)应该是:

select o.*, g.identifier from objects o left join ObjectsGeo og on og.object_id = o.id left join Geo g on g.id = og.geo_id where o.id = 1;

1 个答案:

答案 0 :(得分:1)

以下查询将完成工作:

<form method="POST" action="//externalForm.Url/path">
    <input type="text" name="name">
    <textarea name="message"></textarea></div>
    <input class="btn btn-primary" type="submit" value="Submit"></div>
</form>

Click here for Demo

如果您有任何疑问,请随时通过评论提问。

希望它有所帮助!