2012-07-15 54 views
2
select t1.CardID,t2.Description,t5.BioData 
from db2.tblemployeeinfob t1 
left join (db2.tbldepartments t2,db1.tblbiometrics t5) 
on 
(t1.Department = t2.DepartmentID and 
t1.CardID=t5.CardID 
) 

返回结果是1420 | (NULL) | (NULL)MySQL查询跨数据库加入返回NULL

预期结果为:1420 | DB2_Description_Value | DB1_BioData_value

如果我删除跨数据库连接,等清除DB1然后查询将正常工作,加入从剩下的两个表同一数据库。

如果我做DB1和DB2之间的交叉数据库连接,即使是从同一个数据库DB2表T2将返回NULL。

哪里是我的查询问题,所以我可以从两个数据库中获得价值。

+0

一件事ü可以做的是前缀DBNAME太与表名 – nawfal 2012-07-15 21:44:19

回答

2

你不应该在这里使用交叉连接。你希望两个独立的左联接:

SELECT t1.CardID, t2.Description, t5.BioData 
FROM db2.tblemployeeinfob AS t1 
LEFT JOIN db2.tbldepartments AS t2 ON t1.Department = t2.DepartmentID 
LEFT JOIN db1.tblbiometrics AS t5 ON t1.CardID = t5.CardID 
+0

一个问题就解决了一起,现在我可以从同一个数据库,但价值从第二表值db1仍为NULL – 2012-07-15 21:50:02

+0

@Wasim:这是因为该值不存在于db1中。 – 2012-07-15 21:50:53

+0

正确,你能解释为什么我不能在跨数据库中使用单一的LEFT JOIN – 2012-07-15 21:59:44

0
  <?php 
      include('../dbcon.php'); 
      include('../session.php'); 
      if (isset($_POST['delete_user'])){ 
      $id=$_POST['selector']; 
      $class_id = $_POST['teacher_class_id']; 
      $get_id=$_POST['get_id']; 
      $N = count($id); 
      for($i=0; $i < $N; $i++) 
      { 
       $result = mysql_query("select * from files where file_id = '$id[$i]' ")or die(mysql_error()); 
       while($row = mysql_fetch_array($result)){ 

       $fname = $row['fname']; 
       $floc = $row['floc']; 
       $fdesc = $row['fdesc']; 
       $uploaded_by = $row['uploaded_by']; 



       mysql_query("insert into files (floc,fdatein,fdesc,class_id,fname,uploaded_by) value('$floc',NOW(),'$fdesc','$class_id','$fname','$uploaded_by')")or die(mysql_error()); 


       } 
      } 
      ?> 
      <script> 
      window.location = 'downloadable.php<?php echo '?id='.$get_id; ?>'; 
      </script> 
      <?php 
      } 

      if (isset($_POST['copy'])){ 
      $id=$_POST['selector']; 

      $N = count($id); 
      for($i=0; $i < $N; $i++) 
      { 
       $result = mysql_query("select * from files where file_id = '$id[$i]' ")or die(mysql_error()); 
       while($row = mysql_fetch_array($result)){ 


        $fname = $row['fname']; 
       $floc = $row['floc']; 
       $fdesc = $row['fdesc']; 


       mysql_query("insert into teacher_backpack (floc,fdatein,fdesc,teacher_id,fname) value('$floc',NOW(),'$fdesc','$session_id','$fname')")or die(mysql_error()); 


       } 
      } 
      ?> 
      <script> 
      window.location = 'backpack.php'; 
      </script> 
      <?php 
      } 
      ?> 
      <?php 

      if (isset($_POST['share'])){ 
      $id=$_POST['selector']; 
      $teacher_id = $_POST['teacher_id1']; 
      echo $teacher_id ; 
      $N = count($id); 
      for($i=0; $i < $N; $i++) 
      { 
       $result = mysql_query("select * from files where file_id = '$id[$i]' ")or die(mysql_error()); 
       while($row = mysql_fetch_array($result)){ 


        $fname = $row['fname']; 
       $floc = $row['floc']; 
       $fdesc = $row['fdesc']; 


       mysql_query("insert into teacher_shared (floc,fdatein,fdesc,teacher_id,fname,shared_teacher_id) value('$floc',NOW(),'$fdesc','$session_id','$fname','$teacher_id')")or die(mysql_error()); 


       } 
      } 
      ?> 
      <script> 
      window.location = 'tambah_share_file.php'; 
      </script> 
      <?php 
      } 
      ?>