我有两个表,没有标准方式链接(我知道这不是一个很好的方法)
我们可以说这些表的设置如下所示
表: 的成分
字段: cid,cname,rangeid,company
表:范围
字段: 摆脱,范围名称,年份
虽然在关系数据库中这很简单,但我不太确定最干净的方法(重建数据库不是一种选择)。
我需要的基本查询是。
select * from component where range.year = '2014' and company = 'xxx'
任何建议都将不胜感激。
答案 0 :(得分: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
子句中,就像在你的情况下。但是,您必须确保正确设置索引,请参阅此页面以获取更多信息:
答案 1 :(得分:1)
JOIN
:
select *
from component
inner join ranges on rid = rangeid and year = 2014
where company = 'xxx'
答案 2 :(得分: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'
<强>结果强>
| CID | CNAME | RANGEID | COMPANY | RID | RANGENAME | YEAR | ------|-----------|---------|---------|-----|-----------|------| | 1 | Component | 1 | xxx | 1 | Range | 2014 |
如果component
中可能不存在ranges
的范围,请使用LEFT JOIN
。