0

我有两张表,没有以标准方式链接(我知道这不是一个好方法)

假设表格的设置如下

表: 组件

字段: cid、cname、rangeid、公司

表:范围

字段: 摆脱,范围名称,年份

虽然这在关系数据库中非常简单,但我不太确定这样做的最干净的方法(重新制作数据库不是一种选择)。

我需要的基本查询是。

select * from component where range.year = '2014' and company = 'xxx'

任何建议将不胜感激。

4

3 回答 3

1

JOIN两张表:

select c.cname, r.rangename, r.year, ...
from component AS c
INNER JOIN ranges AS r ON c.rangeid = r.rid
where r.year = '2014' 
  and c.company = 'xxx';

请注意:您可以JOIN正常使用任何表,即使它们之间没有任何关系,只需将条件放在ON子句中,就像您的情况一样。但是,您必须确保索引设置正确,请参阅此页面了解更多信息:

于 2013-09-03T12:59:51.667 回答
1

JOIN是你要找的:

select * 
from component 
inner join ranges on rid = rangeid and year = 2014
where company = 'xxx'
于 2013-09-03T13:00:00.510 回答
1

这是你要找的吗?

SELECT a.cid, a.cname, a.rangeid, a.company, b.rid, b.rangename, b.year
FROM component a
JOIN ranges b ON
    b.rid = a.rangeid
WHERE b.year = 2014
    AND a.company = 'xxx'

结果

| 客户识别码 | 域名 | 范围 | 公司 | 摆脱 | 范围名称 | 年份 |
------|-----------|---------|---------|-----|----- ------|--------|
| 1 | 组件 | 1 | xxx | 1 | 范围 | 2014 |

演示

如果范围 fromcomponent可能不存在于 中ranges,则使用LEFT JOIN.

于 2013-09-03T13:00:05.423 回答