I have been trying to solve my problem but could not find the answer. Oracle db.
I have table context with looks like:
x
| contextId | customer |
----------------------
| 1 | John |
| 2 | David |
I have another table setting:
| contextId | settingName | settingValue |
----------------------------------------
| 1 | Happiness | 6 |
| 1 | Sadness | 3 |
What I would like is to insert David in setting, while copying the settingName and settingValue of John (contextId = 1).
Result should look like:
| contextId | settingName | settingValue |
----------------------------------------
| 1 | Happiness | 6 |
| 1 | Sadness | 3 |
| 2 | Happiness | 6 |
| 2 | Sadness | 3 |
Thanks
Advertisement
Answer
If your requirement is to use the customer names ‘David’ and ‘John’, then you need a join:
INSERT INTO SETTING (CONTEXTID, SETTINGNAME, SETTINGVALUE)
SELECT
(SELECT CONTEXTID FROM CONTEXT WHERE CUSTOMER = 'David'),
s.SETTINGNAME,
s.SETTINGVALUE
FROM CONTEXT AS c INNER JOIN SETTING AS s
ON s.CONTEXTID = c.CONTEXTID
WHERE c.CUSTOMER = 'John'