Ik heb 3 tabellen (a, b en c) waarvan ik voor elke combinatie een aantal (count) in een subquery wil berekenen:
Dit werkt prima, maar nu zou ik ook "geaggregeerde waarden" willen berekenen. Daarmee bedoel ik dat de ID kolom van tabel a, b of c een NULL waarde zou krijgen. Eenvoudiger gezegd: ik wil het aantal uit de subquery weten als bijvoorbeeld a = 1, b = 3 en c ongespecifieerd is. Stel dat de c tabel in totaal 10 rijen heeft, dan zou het aantal uit de subquery "alle waarden van c" moeten opnemen. Dit zou ik ook voor alle mogelijke combinaties willen.
Is dit mogelijk binnen de context van de query? Indien niet, bestaat er dan een andere manier om wat ik wil te bereiken? Naief gezegd zou ik op een of andere manier een extra NULL ID moeten toevoegen aan de a, b en c tabellen. Vervolgens zou ik de WHERE clause van de subquery misschien kunnen herschrijven als een LEFT JOIN met een conditie op de JOIN zelf?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| SELECT table_a.id AS id_A, table_b.id AS id_b, table_c.id AS id_c, ( SELECT COUNT(other_table.id) FROM other_table WHERE other_table.main_table_id = main_table.id AND other_table.table_a_id = table_a.id AND other_table.table_b_id = table_c.id ANDother_table.table_c_id = table_c.id ) AS item_count FROM main_table INNER JOIN table_a ON (1 = 1) INNER JOIN table_b ON (1 = 1) INNER JOIN table_c ON (1 = 1) WHERE main_table.id = 100 |
Dit werkt prima, maar nu zou ik ook "geaggregeerde waarden" willen berekenen. Daarmee bedoel ik dat de ID kolom van tabel a, b of c een NULL waarde zou krijgen. Eenvoudiger gezegd: ik wil het aantal uit de subquery weten als bijvoorbeeld a = 1, b = 3 en c ongespecifieerd is. Stel dat de c tabel in totaal 10 rijen heeft, dan zou het aantal uit de subquery "alle waarden van c" moeten opnemen. Dit zou ik ook voor alle mogelijke combinaties willen.
Is dit mogelijk binnen de context van de query? Indien niet, bestaat er dan een andere manier om wat ik wil te bereiken? Naief gezegd zou ik op een of andere manier een extra NULL ID moeten toevoegen aan de a, b en c tabellen. Vervolgens zou ik de WHERE clause van de subquery misschien kunnen herschrijven als een LEFT JOIN met een conditie op de JOIN zelf?