Hoi,
even op voorhand de situatie schetsen, ik heb 2 tabellen:
employees
employee_id
employee_numberofchilds (INT)
employee_age (INT)
employee_logins
employee_id
employee_logindate
Wat ik wil is een lijst van werknemers die in de employee_logins voorkomen, in de lijst tel ik het aantal werknemers met met 1,2 en 3 kinderen. Omdat de relatie tussen employees en employees_logins 1 of meer is, zie ik geen andere oplossing dan met een subquery te werken:
Nu bevat de tabel employee_login enorm veel records, dus ik wil liefst geen subquery. Dit oplossen met een krijg ik ook niet voor elkaar. Bestaat er een betere manier om dit op te lossen?
Edit: Ik weet ook dat ik in dit voorbeeld het tellen kan oplossen met een GROUP BY of dergelijke, maar in mijn echte situatie heb ik een COUNT nodig.
even op voorhand de situatie schetsen, ik heb 2 tabellen:
employees
employee_id
employee_numberofchilds (INT)
employee_age (INT)
employee_logins
employee_id
employee_logindate
Wat ik wil is een lijst van werknemers die in de employee_logins voorkomen, in de lijst tel ik het aantal werknemers met met 1,2 en 3 kinderen. Omdat de relatie tussen employees en employees_logins 1 of meer is, zie ik geen andere oplossing dan met een subquery te werken:
code:
1
2
3
4
5
| SELECT COUNT(CASE WHEN employee_numberofchilds = 1 THEN 1 ELSE null END) as tel_1, COUNT(CASE WHEN employee_numberofchilds = 2 THEN 1 ELSE null END) as tel_2, COUNT(CASE WHEN employee_numberofchilds = 3 THEN 1 ELSE null END) as tel_3 from employees where empoyee_id in (SELECT distinct employee_id from employee_logins) |
Nu bevat de tabel employee_login enorm veel records, dus ik wil liefst geen subquery. Dit oplossen met een krijg ik ook niet voor elkaar. Bestaat er een betere manier om dit op te lossen?
Edit: Ik weet ook dat ik in dit voorbeeld het tellen kan oplossen met een GROUP BY of dergelijke, maar in mijn echte situatie heb ik een COUNT nodig.
[ Voor 6% gewijzigd door Verwijderd op 23-06-2009 12:58 ]