php - 如何使用 PHP 在 MySQL 中的两个表上同时执行两个 select 语句

标签 php mysql

运行此查询的最佳方式是什么。

我在同一数据库中有两个表:products 和 shop_orders。我正在尝试运行两个选择语句,使用 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 和 Product ID。

此查询应汇总给定日期范围内的销售数量,其中匹配条件为位置、操作 = 销售且类别为男士。该查询的第一部分 ($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

关于php - 如何使用 PHP 在 MySQL 中的两个表上同时执行两个 select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22758959/

相关文章:

MySQL REGEXP 查询 - 不区分重音的搜索

mysql - update命令更新表中所有数据

php - 如何将图像保存到 android 中的 SQLite 数据库?

php - 插入两行,获取第一行的 AI key 并应用于第二个插入。

php - 与动态 HTML 相比,Web 服务有哪些优点?

mysql - Logstash 输入 MySQL

php - 以百分比显示完整空间允许的库

php - SQL查询两个表

mysql - 谁在mysql中工作AES_DECRYPT?

php - 使用 Angular 不工作从本地mysql获取数据