Ik heb 2 tabellen, customer en contact_details, met in de laatste een willekeurige verzameling telefoonnummers, emailadressen etc.
customer: pkey, name, andere zut
contact_details: pkey, customer_key, type (phone, email, etc), details (het echte telefoonnummer etc).
Ik heb nu een view gemaakt voor alle benodigde contact_details, zoals telefoon en email. Nu moet ik die gaan joinen met de customer, maar wel zo dat er per customer maar 1 rij overblijft. Het moet wel mogelijk blijven om meerdere telefoonnummers of emailadressen in te geven, maar ik wil er maar 1 gebruiken voor deze join.
Laat ik me maar even richten op telefoonnummers, en die view noemen we phone.
Stel ik heb 2 customers, 1 en 2, en de volgende contact_details (pkey, cust_key, type, details):
1, 1, 0, 12345
2, 1, 0, 98765
3, 2, 0, 45678
Nu levert de standaard left outer join (ik wil ook customers zonder contact details vinden) 3 rijen op (cust pkey, details pkey, details):
1, 1, 12345
1, 2, 98765
2, 3, 45678
Nu wil ik deze tabellen alleen dus zodanig joinen dat ik eruit krijg (cust pkey, details pkey, details)
1, 1, 12345 (of 1, 2, 98765)
2, 3, 45678
Een van de 2 regels voor customer 1 moet dus wegvallen.
Ik heb al zitten kijken naar joinen op een beperkte selectie van contact_details, maar dan krijg ik weer te weinig data terug (bv customer 2 die opeens geen telefoonnummer heeft).
Is het mogelijk wat ik wil met maar 1 enkele query? Distinct heb ik ook al geprobeerd, maar die werkt alleen over volledige rijen (van geselecteerde kolommen).
customer: pkey, name, andere zut
contact_details: pkey, customer_key, type (phone, email, etc), details (het echte telefoonnummer etc).
Ik heb nu een view gemaakt voor alle benodigde contact_details, zoals telefoon en email. Nu moet ik die gaan joinen met de customer, maar wel zo dat er per customer maar 1 rij overblijft. Het moet wel mogelijk blijven om meerdere telefoonnummers of emailadressen in te geven, maar ik wil er maar 1 gebruiken voor deze join.
Laat ik me maar even richten op telefoonnummers, en die view noemen we phone.
Stel ik heb 2 customers, 1 en 2, en de volgende contact_details (pkey, cust_key, type, details):
1, 1, 0, 12345
2, 1, 0, 98765
3, 2, 0, 45678
Nu levert de standaard left outer join (ik wil ook customers zonder contact details vinden) 3 rijen op (cust pkey, details pkey, details):
1, 1, 12345
1, 2, 98765
2, 3, 45678
SQL:
1
| select * from customer left outer join contact_details on customer.pkey = contact_details.customer_key |
Nu wil ik deze tabellen alleen dus zodanig joinen dat ik eruit krijg (cust pkey, details pkey, details)
1, 1, 12345 (of 1, 2, 98765)
2, 3, 45678
Een van de 2 regels voor customer 1 moet dus wegvallen.
Ik heb al zitten kijken naar joinen op een beperkte selectie van contact_details, maar dan krijg ik weer te weinig data terug (bv customer 2 die opeens geen telefoonnummer heeft).
Is het mogelijk wat ik wil met maar 1 enkele query? Distinct heb ik ook al geprobeerd, maar die werkt alleen over volledige rijen (van geselecteerde kolommen).
More than meets the eye
There is no I in TEAM... but there is ME
system specs