簡體   English   中英

如何在一個中進行兩個查詢?

[英]How can I make two queries in one?

如何將這兩個查詢合二為一?

$query = "SELECT * FROM `amb_prod` WHERE idAmbiente='".$ambId."';";
$result_set = mysql_query($query);

while($member = mysql_fetch_array($result_set)){
        $query2 = "SELECT * FROM `produto`, `pt` WHERE
        produto.refPT = pt.ref AND
        produto.refPT = $member['idProduto'] ;";
    $result_set2 = mysql_query($query2);
}

我試過這個,但它沒有用..

$query = "SELECT * FROM `produto`, `pt` WHERE
        produto.refPT = pt.ref AND
        produto.refPT = (SELECT `idProduto` FROM `amb_prod` WHERE idAmbiente='".$ambId.");";

這應該工作:

$query = "SELECT * FROM `produto`, `pt` WHERE
        produto.refPT = pt.ref AND
        produto.refPT IN (SELECT `idProduto` FROM `amb_prod` WHERE idAmbiente='".$ambId.");";

我不確定表結構,但是連接也可以工作。

使用連接而不是子查詢:

$query = "SELECT pr.*, pt.* 
FROM amb_prod ap 
JOIN producto pr ON (ap.idProduto = pr.refPT) 
JOIN pt ON (pr.refPT = pt.ref) 
WHERE idAmbiente='${ambId}'";

您不能在同一連接中同時打開兩個游標。 您需要打開第二個連接。 我強烈建議不要這樣做; 為讀取的每一行發出查詢會有點慢。 如果我是你,我會這樣做:

SELECT pr.*, pt.*
FROM "produto" pr, "pt" pt, amb_prod ap
WHERE produto.refPT = pt.ref
AND ap.idAmbiente = $ambId
AND produto.refPT = ap.idProduto

理想情況下,您可以將其轉換為參數化查詢,以實現安全性 ,可維護性和性能恢復。 我不確定它是如何在PHP中完成的,但MySQLi_STMT類看起來是一個很好的起點:

SELECT * FROM produtoptamb_prod WHERE produto.refPT = pt.ref AND produto.refPT = amb_prod.idProduto AND amb_prod.idAmbiente = ' “$ ambId”';

根據數據,您可能必須在select子句中使用distinct

暫無
暫無

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

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