querie contactmiddelen weergeven

Status
Niet open voor verdere reacties.

shidan

Gebruiker
Lid geworden
8 jan 2007
Berichten
351
goedemorgen,

ik heb een databank met gegevens van personen en contactgegevens.
daarin staan drie tabellen (voorlopig)
personen, contactmiddelen en contact

met contactmiddelen bedoel ik gsm, gsm vader, gsm werk, telefoon, ...

een persoon kan geen, één of meerdere contactgegevens hebben.
Bekijk bijlage db2.zip
ik wil nu een querie waar elke persoon slechts éénmaal in voorkomt met één contact
(eerst eigen gsm, dan gsm moeder, dan gms vader, ...)
personen zonder contactgegeven moeten erin komen met "nihil" bij het contact


kan iemand me helpen?
 
Ik denk dat je nog een extra veldje nodig heb in je telefoontabel, want hoe weet je nu wat het eerst moet worden gepakt? Daarom heb ik er een veld [Prio] bijgezet, en op basis van de (summiere) gegevens uit je vraag (je gaat maar tot gsm vader) zelf de volgorde ingevuld. Maakt niet uit natuurlijk welke volgorde je toekent, zolang het veld maar gemaakt en gevuld wordt.... Dan kun je met deze query het gewenste resultaat maken:

PHP:
SELECT tbl_persoon.Id_persoon, [Naam] & ", " & [voornaam] AS Persoon, tbl_contactmiddelen.contactmiddel
FROM tbl_persoon INNER JOIN (tbl_contactmiddelen INNER JOIN tbl_contacten ON tbl_contactmiddelen.Id_contactmiddel = tbl_contacten.id_contactmiddel) 
ON tbl_persoon.Id_persoon = tbl_contacten.id_persoon
WHERE (((tbl_contacten.id_contactmiddel) In (SELECT Min(id_contactmiddel) AS Min_CM  FROM tbl_contacten AS Dupe WHERE Dupe.id_persoon = tbl_contacten.[id_persoon])))
GROUP BY tbl_persoon.Id_persoon, [Naam] & ", " & [voornaam], tbl_contactmiddelen.contactmiddel;
 
dat ziet er al keurig uit.
is het ook mogelijk om de mensen zonder contactdata erbij te zetten met 'nihil'?
 
Dan krijg je deze query:
PHP:
SELECT tbl_persoon.Id_persoon, [Naam] & ", " & [voornaam] AS Persoon, tbl_contactmiddelen.contactmiddel
FROM tbl_persoon LEFT JOIN (tbl_contactmiddelen RIGHT JOIN tbl_contacten ON tbl_contactmiddelen.Id_contactmiddel = tbl_contacten.id_contactmiddel) 
ON tbl_persoon.Id_persoon = tbl_contacten.id_persoon
WHERE (((tbl_contacten.id_contactmiddel) In (SELECT Min(id_contactmiddel) AS Min_CM  FROM tbl_contacten AS Dupe 
WHERE Dupe.id_persoon = tbl_contacten.[id_persoon]) Or (tbl_contacten.id_contactmiddel) Is Null))
GROUP BY tbl_persoon.Id_persoon, [Naam] & ", " & [voornaam], tbl_contactmiddelen.contactmiddel;
Deze laat het veld [contactmiddel] leeg. Wil je daar tekst in, dan moet je dat met opmaak regelen. Dan zet je in de eigenschap <Notatie> bijvoorbeeld dit: @;@;"niks"
 
goedemorgen,

ik zou nu in dezelfde tabel ook andere contactmiddelen willen bijhouden
e-mail adressen bvb.
ook hiervan zou ik een query willen die elke persoon weergeeft met een e-mail adres

ik heb er een extra veld bijgezet met een contactgroep (gsm=1, telefoon=2; e-mail=3)

ik heb dus driemaal (ongeveer) dezelfde query nodig


Bekijk bijlage db2 (1).zip
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan