我加入了几个表,我需要添加另一个表,但我似乎无法获得正确的查询。这就是我现在所拥有的 -
表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。我知道我可以使用这些值进行第二次查询,但我更愿意做一个查询并且有单行中的所有数据。这可以在一个查询中完成吗?如果是这样,怎么样?
答案 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字符串完全匹配。