[英]MYSQL: How do select column depending on data from another table?
i have three tables: 我有三张桌子:
Technician - which contains data of the name of tech and which stock provider they get their stock from 技术员-包含技术名称数据以及他们从哪个股票提供者那里获取股票
Stock order - the list of items that they have ordered 库存订单-他们已订购的物品清单
Stock code - a list of the name of the items and the different codes depending on the provider. 库存代码-物品名称的列表以及根据提供者的不同代码。
What i am trying to do run a query that selects the relevant product code depending on which provider the technician gets his stock from as per the outcome table below 我要执行的操作运行查询,根据以下结果表,根据技术人员从哪个供应商获取库存的信息,选择相关的产品代码
Could anyone help me please. 谁能帮我。
thanks in advance. 提前致谢。
Tables 表
Technician 技术员
+-------------+----------------+
| Technician | Stock Supplier |
+-------------+----------------+
| Bob Jones | Provider 1 |
| Erika Jones | Provider 1 |
| Steve Jones | Provider 2 |
+-------------+----------------+
Stock Order 库存订单
+-------------+-----------------------+-------------------+
| 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 |
+-------------+-----------------------+-------------------+
Stock codes 股份代号
+-------------------+-----------------------------------+-------------------------+-------------------------+----------+-------+
| 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 |
+-------------------+-----------------------------------+-------------------------+-------------------------+----------+-------+
Outcome 结果
+-------------+-----------------------+-------------------+-----------+
| 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 |
+-------------+-----------------------+-------------------+-----------+
Use CASE WHEN
to do conditional pickup for code
, based on value of stock_supplier
from technician
table. 使用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.