Ik durf het haast niet toe te geven, maar hier kom ik niet uit 
Oracle database.
Ik heb een query die over meerdere tabellen loopt, geen probleem. Het resultaat van deze query moet een aantal records in een andere tabel bijwerken, maar er is een samengestelde primaire sleutel, dus meerdere join condities.
Ik kom op internet veel tegen over IN() en =, correletated subqueries etc, maar ik snap nog steeds niet hoe ik het moet oplossen.
Een voorbeeld van een correlated subquery in een update statement:
Prima, maar moet ik ongeveer het volgende:
Ik zou denken het volgende:
Voorbeelden op internet plaatsen de SET aan het einde, maar ook dat werkt niet.
De inner join zelf is qua syntax juist:
Mijn syntax in combinatie met het update statement zelf is niet in orde, maar waar?
Een makkelijke oplossing is om de subquery naar een tabel te laten schrijven (CREATE TABLE AS SELECT * FROM ETC), maar he... ik wil nu wel weten wat ik over het hoofd zie
Oracle database.
Ik heb een query die over meerdere tabellen loopt, geen probleem. Het resultaat van deze query moet een aantal records in een andere tabel bijwerken, maar er is een samengestelde primaire sleutel, dus meerdere join condities.
Ik kom op internet veel tegen over IN() en =, correletated subqueries etc, maar ik snap nog steeds niet hoe ik het moet oplossen.
Een voorbeeld van een correlated subquery in een update statement:
SQL:
1
2
3
4
| UPDATE A SET S = (SELECT SUM(B) FROM B WHEREA.A = A GROUP BY A) |
Prima, maar moet ik ongeveer het volgende:
SQL:
Nou dat werkt natuurlijk niet aangezien de subquery nergens gedefinieerd is, maar de vraag is... waar moet dat?1
2
3
4
5
| UPDATE A SET LOGIC_OK = 'Y' WHERE A.VELD1 = SUBQUERY.VELD1 AND A.VELD2 = SUBQUERY.VELD2 |
Ik zou denken het volgende:
SQL:
Maar dat werkt niet.1
2
3
4
5
6
| UPDATE A SET LOGIC_OK = 'Y' INNER JOIN (SELECT VELD1, VELD2, ETC FROM A, B, C WHERE A.VELD1 = B.VELD1 ETC) SUBQUERY ON A.VELD1 = SUBQUERY.VELD1 AND A.VELD2 = SUBQUERY.VELD2 |
Voorbeelden op internet plaatsen de SET aan het einde, maar ook dat werkt niet.
De inner join zelf is qua syntax juist:
SQL:
Dit werkt wel.1
2
3
4
5
6
7
8
| SELECT * FROM A INNER JOIN (SELECT VELD1, VELD2, ETC FROM A, B, C WHERE A.VELD1 = B.VELD1 ETC) SUBQUERY ON A.VELD1 = SUBQUERY.VELD1 AND A.VELD2 = SUBQUERY.VELD2 |
Mijn syntax in combinatie met het update statement zelf is niet in orde, maar waar?
Een makkelijke oplossing is om de subquery naar een tabel te laten schrijven (CREATE TABLE AS SELECT * FROM ETC), maar he... ik wil nu wel weten wat ik over het hoofd zie
[ Voor 9% gewijzigd door Motrax op 23-03-2011 12:47 ]
☻/
/▌
/ \ Analyseert | Modelleert | Valideert | Solliciteert | Generaliseert | Procrastineert | Epibreert |