簡體   English   中英

如何使用PHP在MySQL的兩個表上同時執行兩個select語句

[英]How to perform two select statements simultaneously on two tables in MySQL using PHP

什么是運行此查詢的最佳方法。

我在同一個數據庫中有兩個表,products和shop_orders。 我正在嘗試運行兩個select語句,使用shop_orders中的字段之一來檢索數據。

<td align="center" bgcolor="#F5F5F5" class="column-light"><strong>Chain Men's Shoes</strong></td>
      <td align="center" bgcolor="#F5F5F5" class="column-light"><strong>

<?
$sql="
    SELECT * FROM shop_orders WHERE 
    DATE(CONCAT(shop_order_year,'-',shop_order_month,'-',shop_order_day))
    BETWEEN '".$start."' and '".$end."'
    AND shop_order_action = 'Sale' AND shop_order_field_to_update NOT LIKE '%con%' AND shop_order_location = 'Chain' ORDER BY shop_order_id DESC";
    $result=mysql_query($sql);
    while($rows=mysql_fetch_array($result)){ ?>
          <? $shop_order_product_id = $rows['shop_order_product_id'];?>

           <?
        $sql2="SELECT * FROM product WHERE product_id='".$rows['shop_order_id']."' AND category = 'Mens'";
        $result2=mysql_query($sql2);
        $mens_shoes=mysql_num_rows($result2);
        echo $mens_shoes; ?>
      </strong></td> <?
    }
?>

DB Structure

Product 

Product ID   Category 

1234         Mens
2345         Mens

Shop_orders

shop_order_day     shop_order_month    shop_order_year    shop_order_action    

     1                   03                  2014                 Sale

shop_order_product id     shop_order_field_to_update

        1234                   quantity_c_size_39

相似的字段是shop_order_product_id和產品ID。

此查詢應在給定日期段內總計銷售數量,其中匹配條件為地理位置,action = Sale,類別為Mens。 該查詢的第一部分($ sql)已經有效,但是,當我嘗試將其與第二個嵌入式SELECT語句結合使用時,返回的數字為零。 我知道這個數字應該大於零。

有什么幫助嗎?

*更新*

我似乎用這個解決了這個問題:

$sql="
                SELECT COUNT(*) FROM shop_orders 
                LEFT JOIN product
                ON shop_orders.shop_order_product_id=product.product_id
                WHERE 
                DATE(CONCAT(shop_order_year,'-',shop_order_month,'-',shop_order_day))
                BETWEEN '".$start."' and '".$end."'
                AND category = 'Mens' AND shop_order_action = 'Sale' AND shop_order_field_to_update NOT LIKE '%con%' AND shop_order_location = 'Chain' GROUP BY shop_order_id";

我建議您學習更多sql。

該語句將幫助您:

http://www.w3schools.com/sql/sql_join.asp

使用此語句,您可以執行以下操作:

SELECT * FROM t1 JOIN t2 on t1.id WHERE ........;

您可能還需要此:

http://www.w3schools.com/sql/sql_groupby.asp

如果您的表是通過前瞻性鍵鏈接的,則可以將它們聯接起來,並使用單個sql quethem對所有值進行計數,方法是:

$sql="SELECT * FROM shop_orders
    LEFT JOIN product ON product.product_id=shop_order_product_id
    WHERE 
    DATE(CONCAT(shop_order_year,'-',shop_order_month,'-',shop_order_day)) BETWEEN '".$start."' and '".$end."'
     AND shop_order_action = 'Sale' AND shop_order_field_to_update NOT LIKE '%con%' AND shop_order_location = 'Chain' ORDER BY shop_order_id DESC
    ";

左連接子句ON應該是shop_orders前鍵與生產主鍵之間的鏈接(如果數據庫中具有1到許多數據邏輯結構)

暫無
暫無

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

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