Toon posts:

[MS SQL]Opmaak per resultaat

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mijn titel is heel onduidelijk maar beter kan ik niet bedenken, sorry :)

Het zit zo:
Ik heb een tabel 'Telefoon' die als cellen 'Volgnummer', 'Telefoon', 'GSM', 'FAX' bevat. De cel 'Volgnummer' refereert naar een andere tabel 'Medewerkers' waarin dit 'Volgnummer' de primary key is.
Per 'Medewerker' is het de bedoeling dat ik dus een hele reeks telefoonnummers kan bijhouden in de tabel 'Telefoon'.
De cel 'Telefoon' bevat het telefoonnummer met enkel het '/' teken als scheiding tussen zone-nummer en telefoonnummer. De cellen 'GSM' en 'FAX' kunnen maar 2 waarden aannemen, '1' of '0', afhankelijk of het bijhorende nummer een gsm/fax is. Ze kunnen ook nooit beiden '1' zijn, maar wel beiden '0' (in geval van een gewoon nummer).

Nu wil ik gegevens op een speciale manier uitlezen.
Momenteel werk ik met de query
SQL:
1
2
3
SELECT Telefoon.Telefoon
FROM Telefoon, Medewerkers
WHERE Telefoon.Volgnummer = Medewerkers.Volgnummer AND Medewerkers.Volgnummer = @Nummer

Dit zorgt er voor dat voor elke waarde van '@Nummer' die ik ingeef ik alle nummer krijg die hierbij horen.

Dit is al goed, maar ik wil meer.
Stel dat ik nu als resultaat krijg:
code:
1
2
3
09/3215632
0479/852130
052/834213


Dan wil ik eigenlijk graag een query maken die mij dit geeft:
code:
1
2
3
09/321.56.32 (TEL)
0479/85.21.30 (GSM)
052/83.42.13 (FAX)


Ik heb al geprobeert met een IF-statement te werken. Dit werkte naar behoren zolang ik maar 1 telefoonnummer per medewerker had. Eens ik meerdere nummer had, wat de bedoeling is, liep alles in het honderd. Als jullie per sé de code willen zal ik die hier nog plakken maar ze is lang en niet bruikbaar dus om plaats te sparen zet ik ze hier nog niet meteen.

Mijn vraag is hoe ik dit nu best kan aanpakken. Het plaatsen van de '.'-en is geen probleem maar het vermelden van (TEL) (GSM) of (FAX) weet ik niet hoe ik dat moet aanpakken.

(mensen die willen weten hoe ik de '.' ga plaatsen. Gewoon met substring langs achter beginnen a.d.h.v. LEN)

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

pseudo code:

CASE
WHEN Telefoon.Fax=1 then ' (FAX)'
WHEN Telefoon.GSM=1 then '(GSM)'
ELSE '(TEL)'
END As TelefoonType

zou toch moeten werken ?

[ Voor 16% gewijzigd door TheRookie op 09-11-2004 12:41 ]


Verwijderd

zoiets als
code:
1
2
3
4
(CASE
   WHEN GSM = 1 THEN "GSM"
...
) AS Achtervoegsel
:)
Je kunt ook nog overwegen om 1 veld TelefoonType met 0=gewoon, 1=GSM, 2=FAX te nemen. Kun je eenvoudig nog es bv VOIPTelefoon ofzo toevoegen - ik verzin maar wat :) en je hoeft niet zo te controleren of al je 0-en en 1-en wel in orde zijn...

offtopic:
ik had het kunnen weten: te laat :(

[ Voor 11% gewijzigd door Verwijderd op 09-11-2004 12:44 ]


  • d00d
  • Registratie: September 2003
  • Laatst online: 16-09-2025

d00d

geen matches

hmm, met het CASE statement vallen dus al geen punten meer te verdienen...
de opmaak van het telefoonnummer zou ik als volgt doen:

code:
1
select reverse(stuff(stuff(reverse(Telefoon.Telefoon), 5, 0, '.'), 3, 0, '.'))

42.7 percent of all statistics are made up on the spot.


Verwijderd

Topicstarter
Wow supersnel antwoord en dan nog perfect antwoord ook bedankt!
Het is nu dus gelukt met de cases. Bedankt allemaal voor de hulp, ik wist niet dat zo iets bestond in sql.
Voor de opmaak heb ik het aangepakt met substrings maar ik ga zeker de voorgestelde oplossing eens bekijken.

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

kijk dan ook nog ff naar de suggestie van Sikko2go om ipv de kolommen GSM en FAX een veld TelefoonType te maken, dan ben je veel flexibeler en hoef je niet voor, bijv. GSM Privé en Telefoon Thuis extra kolommen toe te voegen :)

Verwijderd

Topicstarter
Never mind, al gevonden :s

[ Voor 99% gewijzigd door Verwijderd op 10-11-2004 09:56 ]

Pagina: 1