簡體   English   中英

編寫這2個SQL查詢的更好方法?

[英]Better way to write these 2 SQL queries?

它獲取URL的名稱,找到ID,然后使用它來查找與此ID相關的產品。

有沒有更好的書寫方式? 說好一點是指性能。 我不知道兩個查詢是否可以合並以獲得更好的性能。

$cname = mysql_real_escape_string($_GET["c"]);

$row = mysql_fetch_assoc(mysql_query("SELECT id FROM companies WHERE name = '$cname' LIMIT 1"));
$cID = $row['id'];

$products = mysql_query("SELECT name FROM products WHERE company_id = '$cID' " );
while($product = mysql_fetch_assoc($products)) {
                echo $product['name'].'<br>';
            }
SELECT c.id, p.name
FROM companies c
INNER JOIN products p ON p.company_id = c.id
WHERE c.name = '$cname'

只需使用簡單的聯接:

SELECT p.name FROM products p, companies c
WHERE c.id = p.company_id
AND c.name = '<COMPANY NAME>';

只要公司名稱唯一,就不會遇到任何問題。

為了安全起見,您可以(應該)考慮參數化查詢。 查看這些結果

當然,您可以將它們合並為一個:

SELECT products.name
  FROM products
  JOIN companies
    ON products.company_id = companies.id
  WHERE companies.name = '$cname'

但是,這在第一個查詢中丟失了LIMIT-您是否希望達到這個極限?

你可以這樣做:

SELECT p.name
  FROM products p
  JOIN companies c
    ON (p.company_id = c.id)
  WHERE c.name = '$cname'

暫無
暫無

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

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