标题可能不好,但我找不到更好的简短说明。
这些是我正在使用的表格:
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;
答案 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>
如果您有任何疑问,请随时通过评论提问。
希望它有所帮助!