2014-11-24 64 views
-2

我有這樣的子查詢:子查詢PHP的MySQL

$sql = "SELECT * FROM curriculum WHERE ci in (SELECT curriculum FROM contactados WHERE activado = 'si' AND empresa = '".$_SESSION['emp']."')"; 
    echo "Rows: "[email protected]_num_rows($sql); 
    $result = mysql_query($sql, $link) or die(mysql_error($link)); 
     while($fila = mysql_fetch_array($result)){ 

     echo $fila['nombres']." ".$fila['apellidos']or die("error"); 


     }  

但doesn't的工作,我不知道爲什麼

+0

什麼「不起作用」呢? – Strawberry 2014-11-24 16:13:04

+1

@Strawberry,我們需要猜測)))。但是真的,Facundo Gutierrez寫下了這個問題 – sergio 2014-11-24 16:14:05

+0

你真的應該在這裏使用JOIN而不是子查詢嗎? – 2014-11-24 16:15:25

回答

0

我希望這對你的工作......

$sql = "SELECT `a`.*, `b`.`curriculum` FROM `curriculum` AS `a` 
     LEFT JOIN `contactados` AS `b` ON `a`.`ci` = `b`.`curriculum` 
     WHERE `b`.`activado` = 'si' AND `b`.`empresa` = '".$_SESSION['emp']."'"; 
+0

這是一個JOIN。 'LEFT'在這裏是多餘的 - 正如所有反引號 – Strawberry 2014-11-24 16:25:45

+0

我經常使用這種方式來防止錯誤顯示,如果數據未找到... haha​​ha – elcicko 2014-11-24 16:29:54

+1

我不關注。從優化者的角度來看,這與JOIN完全相同。在您的查詢上運行EXPLAIN EXTENDED,然後顯示警告。你會明白我的意思。 – Strawberry 2014-11-24 16:33:27