mysql - 获取我的查询的多个结果

标签 mysql database join

我有以下表结构,

mysql> select * from purchase_order_detail;
+--------------------------+-------------------+---------+------------------+-------------------------+---------------------+------------+---------------------+
| purchase_order_detail_id | purchase_order_id | item_id | ordered_quantity | created_by              | created_on          | updated_by | updated_on          |
+--------------------------+-------------------+---------+------------------+-------------------------+---------------------+------------+---------------------+
|                        1 |                 1 |     279 |              100 | NULL                    | 2015-02-21 01:42:06 | NULL       | 2015-02-21 01:42:06 |
|                        2 |                 1 |     286 |              100 | NULL                    | 2015-02-21 01:42:06 | NULL       | 2015-02-21 01:42:06 |
|                        3 |                 2 |     279 |              200 | NULL                    | 2015-02-21 01:42:34 | NULL       | 2015-02-21 01:42:34 |
|                        4 |                 2 |     286 |              300 | NULL                    | 2015-02-21 01:42:34 | NULL       | 2015-02-21 01:42:34 |
|                       23 |                 1 |     287 |              100 | taqi.official@gmail.com | 2015-02-22 14:37:04 | NULL       | 2015-02-22 14:37:04 |
|                       24 |                28 |     286 |               43 | admin@gmail.com         | 2015-02-22 18:10:15 | NULL       | 2015-02-22 18:10:15 |
|                       25 |                28 |     287 |               43 | admin@gmail.com         | 2015-02-22 18:10:23 | NULL       | 2015-02-22 18:10:23 |
+--------------------------+-------------------+---------+------------------+-------------------------+---------------------+------------+---------------------+
7 rows in set (0.00 sec)

mysql> select * from delivery_order;
+-------------------+--------------------------+-------------------+---------------------+-----------------+---------------------+------------+---------------------+
| delivery_order_id | purchase_order_detail_id | recieved_quantity | recieved_on         | created_by      | created_on          | updated_by | updated_on          |
+-------------------+--------------------------+-------------------+---------------------+-----------------+---------------------+------------+---------------------+
|                 1 |                        1 |                50 | 0000-00-00 00:00:00 | NULL            | 2015-02-21 01:44:15 | NULL       | 2015-02-21 01:44:15 |
|                 2 |                        2 |                50 | 0000-00-00 00:00:00 | NULL            | 2015-02-21 01:44:15 | NULL       | 2015-02-21 01:44:15 |
|                 3 |                        1 |                50 | 0000-00-00 00:00:00 | NULL            | 2015-02-21 01:44:35 | NULL       | 2015-02-21 01:44:35 |
|                 4 |                        3 |                70 | 0000-00-00 00:00:00 | NULL            | 2015-02-21 01:44:35 | NULL       | 2015-02-21 01:44:35 |
|                 5 |                        4 |               150 | 0000-00-00 00:00:00 | NULL            | 2015-02-21 01:45:04 | NULL       | 2015-02-21 01:45:04 |
|                 6 |                        3 |                90 | 0000-00-00 00:00:00 | NULL            | 2015-02-21 01:45:04 | NULL       | 2015-02-21 01:45:04 |
|                 7 |                        4 |               100 | 0000-00-00 00:00:00 | NULL            | 2015-02-21 01:45:28 | NULL       | 2015-02-21 01:45:28 |
|                28 |                       24 |                34 | 2015-02-21 00:00:00 | admin@gmail.com | 2015-02-22 18:10:15 | NULL       | 2015-02-22 18:10:15 |
|                29 |                       25 |                34 | 2015-02-21 00:00:00 | admin@gmail.com | 2015-02-22 18:10:23 | NULL       | 2015-02-22 18:10:23 |
+-------------------+--------------------------+-------------------+---------------------+-----------------+---------------------+------------+---------------------+
9 rows in set (0.00 sec)

mysql> select * from stock;
+----------+-------------------+------------+----------+---------------+------------+---------------------+------------+---------------------+
| stock_id | delivery_order_id | project_id | quantity | stock_type_id | created_by | created_on          | updated_by | updated_on          |
+----------+-------------------+------------+----------+---------------+------------+---------------------+------------+---------------------+
|        1 |                 1 |          1 |       30 |             1 | NULL       | 2015-02-21 01:46:38 | NULL       | 2015-02-21 01:46:38 |
|        2 |                 1 |          2 |       20 |             1 | NULL       | 2015-02-21 01:46:38 | NULL       | 2015-02-21 01:46:38 |
|        3 |                 2 |          1 |       50 |             1 | NULL       | 2015-02-21 01:47:30 | NULL       | 2015-02-21 01:47:30 |
|        4 |                 3 |          1 |       40 |             1 | NULL       | 2015-02-21 01:47:30 | NULL       | 2015-02-21 01:47:30 |
|        5 |                 3 |          2 |       10 |             1 | NULL       | 2015-02-21 01:47:51 | NULL       | 2015-02-21 01:47:51 |
+----------+-------------------+------------+----------+---------------+------------+---------------------+------------+---------------------+

我想获取所有stock_id,其中purchase_order_id = 1且item_id = 279。 我已经写了这个查询

select s.stock_id 
  from stock s
     , delivery_order do
     , purchase_order_detail pod
     , purchase_order po 
 where s.delivery_order_id = do.delivery_order_id
   and pod.purchase_order_detail_id = do.purchase_order_detail_id
   and po.purchase_order_id = 1 
   and pod.item_id = 279;

但得到以下结果,这是不正确的......

+----------+
| stock_id |
+----------+
|        1 |
|        2 |
|        4 |
|        5 |
+----------+

我想根据purchase_order_detail表中的特定purchase_order_id和item_id获取stock_id。

最佳答案

你可以试试这个:

SELECT DISTINCT 
  s.stock_id ID
FROM stock s 
  LEFT JOIN delivery_order do 
    ON s.delivery_order_id = do.delivery_order_id
  LEFT JOIN purchase_order_detail pod 
    ON do.purchase_order_detail_id = pod.purchase_order_detail_id
WHERE pod.purchase_order_id = 1 
   AND pod.item_id = 279;

关于mysql - 获取我的查询的多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661703/

相关文章:

php - 当数据库连接丢失时,如何在 PHP 中重新连接并重试 MySQL 查询?

java - 如何在 MySQL 的 SQL 查询中将 ArrayList<> 作为 IN 子句传递

mysql - 在这种情况下我应该使用面向对象的方法来设计数据库表吗

mysql - 在 MYSQL 中使用连接删除行

MySql 数据透视表或连接问题

javascript - Node.js 无法在循环内运行 mysql 查询

php - Opencart - 添加产品出现错误

java - Android 数据库 SQLite 平均值

java - 我尝试连接数据库时出现错误

mysql - 如何将这三个 MYSQL 查询合而为一?