Reputation: 13
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 |
+-------------+-----------------------+-------------------+-----------+
Upvotes: 0
Views: 53
Reputation: 6541
Use CASE WHEN
to do conditional pickup for code
, based on value of stock_supplier
from technician
table.
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;
Upvotes: 1