MySQL:多个表上的多列连接

时间:2011-02-09 21:56:55

标签: sql mysql join unions

我加入了几个表,我需要添加另一个表,但我似乎无法获得正确的查询。这就是我现在所拥有的 -

表1 carid,catid,makeid,modelid,caryear

表2 makeid,makename

表3 modelid,modelname

表4 catid,catname

我用来加入这些的查询是:

SELECT * FROM table1 a
  JOIN table2 b on a.makeid=b.makeid
  JOIN table3 c on a.modelid=c.modelid
  JOIN table4 d on a.catid=d.catid
  WHERE a.carid = $carid;

现在我需要添加第5个表格,我从第三方添加,我很难添加到现有查询中。新表包含这些字段 -

表5 id,year,make,model,citympg,hwympg

我需要基于表1中的caryear,来自表2的makename和来自表3的modelname的citympg和hwympg。我知道我可以使用这些值进行第二次查询,但我更愿意做一个查询并且有单行中的所有数据。这可以在一个查询中完成吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:2)

在联接中可能有多个条件。 这有用吗?

SELECT a.*, e.citympg, e.hwympg
FROM table1 a
  JOIN table2 b on a.makeid=b.makeid
  JOIN table3 c on a.modelid=c.modelid
  JOIN table4 d on a.catid=d.catid
  Join table5 e on b.makename = e.make
                and c.modelname = e.model
                and a.caryear = e.year
  WHERE a.carid = $carid;

......虽然你的问题不明确。你只是想要将table5加入其他人,还是你想用table5做其他事情?

答案 1 :(得分:1)

没有索引,效率不高,但你可以做到

LEFT JOIN table5 ON (table2.make = table5.make AND table3.model = table5.model AND table1.caryear = table5.caryear)

这也假设make和models和years字符串完全匹配。