繁体   English   中英

MYSQL:如何根据另一个表中的数据选择列?

[英]MYSQL: How do select column depending on data from another table?

我有三张桌子:

技术员-包含技术名称数据以及他们从哪个股票提供者那里获取股票

库存订单-他们已订购的物品清单

库存代码-物品名称的列表以及根据提供者的不同代码。

我要执行的操作运行查询,根据以下结果表,根据技术人员从哪个供应商获取库存的信息,选择相关的产品代码

谁能帮我。

提前致谢。

技术员

+-------------+----------------+
| Technician  | Stock Supplier |
+-------------+----------------+
| Bob Jones   | Provider 1     |
| Erika Jones | Provider 1     |
| Steve Jones | Provider 2     |
+-------------+----------------+

库存订单


+-------------+-----------------------+-------------------+
|  Tech Name  |     Product Name      |     Category      |
+-------------+-----------------------+-------------------+
| Bob Jones   | WURTH PASTE GREY      | CONSUMABLES       |
| Bob Jones   | RADIANT WAX           | VALETING PRODUCTS |
| Bob Jones   | TELESCOPIC MAGNET     | HARDWARE          |
| Steve Jones | TELESCOPIC MAGNET     | HARDWARE          |
| Steve Jones | SAFETY GLASSES (PREP) | HARDWARE          |
| Erika Jones | ENGINE OIL 1L         | MAINTENANCE ITEMS |
| Erika Jones | WURTH VAKU 50 FILLER  | CONSUMABLES       |
+-------------+-----------------------+-------------------+

股份代号




+-------------------+-----------------------------------+-------------------------+-------------------------+----------+-------+
|     CATEGORY      |               ITEM                | PROVIDER 1 PRODUCT CODE | PROVIDER 2 PRODUCT CODE | QUANTITY | PRICE |
+-------------------+-----------------------------------+-------------------------+-------------------------+----------+-------+
| VALETING PRODUCTS | RADIANT WAX                       | CON.46105               | 46101                   |        1 |  4.92 |
| CONSUMABLES       | WURTH PASTE BLACK                 | 8932801                 | 8932801                 |        1 | 21.44 |
| CONSUMABLES       | WURTH PASTE GREY                  | 8932802                 | 8932802                 |        1 | 21.44 |
| CONSUMABLES       | WURTH PLASTIC CLEANER             | 8935001                 | 8935001                 |        1 | 12.99 |
| CONSUMABLES       | WURTH VAKU 50 FILLER              | 89260501                | 89260501                |        1 | 14.95 |
| MAINTENANCE ITEMS | ENGINE OIL 1L                     | 521772392               | 521772392               |        1 |  5.63 |
| MAINTENANCE ITEMS | RED ANTIFREEZE (65 PLATE ONWARDS) | 523770482               | 523770482               |        1 |   2.3 |
| HARDWARE          | TELESCOPIC MAGNET                 | 553777300               | 60370                   |        1 |  2.32 |
| HARDWARE          | SAFETY GLASSES (PREP)             | 3M2720S                 | 15SC                    |        1 |  2.83 |
| HARDWARE          | SAFETY GLASSES (OVER SPECTACLES)  | 3M2800                  | 15SC                    |        1 |  3.06 |
| PPE               | SIZE 9 MECHANIC STYLE GLOVES      | GRE.30305509            | 303-MAT-PR              |        1 |  1.48 |
+-------------------+-----------------------------------+-------------------------+-------------------------+----------+-------+



结果



+-------------+-----------------------+-------------------+-----------+
|  Tech Name  |         Name          |     Category      |   Code    |
+-------------+-----------------------+-------------------+-----------+
| Bob Jones   | WURTH PASTE GREY      | CONSUMABLES       | 8932802   |
| Bob Jones   | RADIANT WAX           | VALETING PRODUCTS | CON.46105 |
| Bob Jones   | TELESCOPIC MAGNET     | HARDWARE          | 553777300 |
| Steve Jones | TELESCOPIC MAGNET     | HARDWARE          | 60370     |
| Steve Jones | SAFETY GLASSES (PREP) | HARDWARE          | 15SC      |
| Erika Jones | ENGINE OIL 1L         | MAINTENANCE ITEMS | 521772392 |
| Erika Jones | WURTH VAKU 50 FILLER  | CONSUMABLES       | 89260501  |
+-------------+-----------------------+-------------------+-----------+

使用CASE WHEN根据technician表中的stock_supplier值对code进行条件提取。

SELECT 
    so.tech_name 'Tech Name',
    so.product_name Name,
    so.category Category,
    CASE t.stock_supplier
        WHEN 'Provider 1' THEN sc.PROVIDER_1_PRODUCT_CODE
        WHEN 'Provider 2' THEN sc.PROVIDER_2_PRODUCT_CODE
    END AS Code
FROM stock_order so
INNER JOIN technician t ON so.tech_name = t.technician
INNER JOIN stock_codes sc ON so.product_name = sc.item;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM