簡體   English   中英

使用從另一個表檢索的數據從表檢索數據

[英]Retrieve data from table using data retrieved from another table

我需要從數據庫中的一個表中獲取ID,並將該ID用作“鍵”,以便從另一個表中獲取名稱。 例如

 $result2 = mysql_query("SELECT * FROM XXX WHERE id=8 ") 
 or die(mysql_error());  

 while($row = mysql_fetch_array( $result2 )) {

echo $row['client_id'];

在這里,我從表1中獲得client_id。現在如何在其中實現該功能,以便它僅返回具有上述id的名稱和姓氏

$data = mysql_query("SELECT firstname, lastname FROM YYY WHERE ???? :S ") 
or die(mysql_error()); 
Print "<table border cellpadding=3>"; 
while($info = mysql_fetch_array( $data )) 
   { 
   Print "<tr>"; 
   Print "<th>fname:</th> <td>".$info['firstname'] . "</td> "; 
   Print "<th>lname:</th> <td>".$info['lastname'] . " </td></tr>"; 
} 
Print "</table>"; 
?>

為什么不這樣:

$data = mysql_query("SELECT firstname, lastname FROM YYY WHERE id ". $row['client_id']) ;
or die(mysql_error()); 

如果只需要從XXX表中獲取client_id,請使用子查詢:

$data = mysql_query("SELECT firstname, lastname FROM YYY WHERE id IN (SELECT client_id FROM XXX WHERE id=8 )") .

如果XXX.id是PRIMARY KEY,則該子查詢將僅返回一行,因此如果使用id IN (SEL...) ,則使用id = (SEL...

用這個

  SELECT firstname, lastname FROM YYY WHERE id IN (SELECT client_id FROM XXX WHERE id=8 )

只是為了回答這個問題:

$sql = "SELECT firstname, lastname FROM YYY WHERE client_id = ".$row['client_id']."";

但是,如前所述,請勿使用mysql_函數,以免它們已被棄用,將來會被刪除。 這意味着如果您仍然使用它們,則代碼將不會運行很長時間。

另外,我猜想用MySQL JOIN解決這個問題會更高效,更優雅。 如果您在執行此操作時遇到困難,請尋求幫助。

使用JOIN進行查詢的簡單示例如下:

$sql = "
SELECT 
  yy.firstname, yy.lastname 
FROM xx 
JOIN yy ON yy.client_id = xx.client_id 
WHERE xx.id = ".$yourID."
";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM