2013-06-25 167 views
0

我有一个由3个表a,b,c组合而成的查询,这里的问题是表c存在于2个数据库D1和D2中,所以我必须从两个数据库中为表获取记录ç。表a和b是从单独的数据库D1,Mysql查询组合

查询是:

$strQuery="SELECT a.id, b.lastname, school " ."FROM D1.a,D1.b" . 
    " WHERE a.idint = (select c_idint from D1.c where Cid IN(10) 
UNION select c_idint from D2.c where Cid IN(10) order by c_idint) 
AND a.idint = b.idb"; 

的问题是场“学校”是表C,如果我避免查询外地“学校”它工作正常,但我也必须获取“学校”字段,我如何修改查询。谢谢:)

+0

使用'AS'到你的别名'D1.c'表到别的 – naththedeveloper

+0

*这是*的问题?怎么样在这个查询中发生的所有其他垃圾 - 如果子查询返回一个数组,以及停止和开始(“。”)是什么? – Strawberry

+0

@Strawberry,在你喊之前请想想 –

回答

0

试试这个:

$strQuery="SELECT a.id, b.lastname, c.school as dSchool, '' as ddSchool " ."FROM D1.a,D1.b, D1.c" . 
    " WHERE a.idint = c.idint AND c.Cid IN (10) 
AND a.idint = b.idb 

UNION 

SELECT a.id, b.lastname, '' as dSchool, c.school as ddSchool " ."FROM D1.a,D1.b, D2.c" . 
    " WHERE a.idint = c.idint AND c.Cid IN (10) 
AND a.idint = b.idb 
"; 
+0

完美...完美.. –

2

你需要的是alias

$strQuery="SELECT a.id, b.lastname, D2.c.school as school1,D1.c.school as school2 " ."FROM D1.a,D1.b,D1.c,d2.c" . 
      " WHERE a.idint = (select c_idint from D1.c where Cid IN(10) 
      UNION select c_idint from D2.c where Cid IN(10) order by c_idint) 
      AND a.idint = b.idb"; 
+0

应该有一个'从表c'部分也在查询右边,但它从2个数据库 –

+0

其给出错误 –

+0

什么错误?我指导你,你想在我的查询中更改数据库或表名。 – Rikesh

0

给一个尝试这样的: -

$strQuery="SELECT a.id, b.lastname, c.school " ."FROM D1.a,D1.b,D1.c" . 
" WHERE a.idint = (select c_idint from D1.c where Cid IN(10) 
UNION select c_idint,school from D2.c where Cid IN(10) order by c_idint) 
AND a.idint = b.idb"; 
+0

,但是表c是从2个数据库D1和D2获取的 –

+0

@YipManWingChun在查询学校中从数据库D1和D2中获取 –

+0

否,您将查询作为“”从D1获取。 a,D1.b,D1.c“”没有D2.c? –