SQL Server Query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik ben een totale beginner in SQL Query, het staat op de planning me hier in te verdiepen, maar voor nu even een vraag.

Ik heb 2 tabellen
Accounts
Addresses

in Accounts heb ik onder andere deze velden

AccountId, Telephone1

in Addresses heb ik onder andere deze velden

ParentId, Telephone1

ik heb met een import van mijn data alle telefoon nummers per ongeluk in Addresses - Telephone1 gezet, maar deze hadden eigenlijk in Accounts gemoeten.

de ParentId is gelinked met AccountId

Wat ik nu dus wil doen is alle telefoonnummer van Addresses verplaatsen naar Accounts, maar de telefoonnummers moeten natuurlijk aan row komen (met overeenkomende ID's)
ik gebruik SQL Server 2005

Kan iemand mij in de goede richting helpen door mij te vertellen welke functie ik hiermee moet gebruiken. Ik ben dan zelf berijd om uit te zoeken wat me uit eindelijke code moet worden. Ik zou niet weten waar ik moet beginnen.

Thanq

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 15-09 20:20
Een insert in de 2de table doen met een select uit de 1ste tabel :)

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


  • wasted247
  • Registratie: Oktober 2006
  • Laatst online: 18-12-2024
^ Dat dus, of je doe je import overnieuw ;)

Verwijderd

Topicstarter
maar dan let hij toch niet op de id's ?
er staat nog meer data in beide tabellen dus moet echt zorgen dat alle data in de juiste Row komt, moet ik niet nog iets aangeven zodat hij ParentId met AccountId gaat vergelijken ?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

SQL:
1
UPDATE Accounts SET Telephone1 = ad.Telephone1 FROM Accounts ac JOIN Addresses ad ON ac.AccountId = ad.ParentId

Ofzo.

Maar goed, ga eerste eens wat lezen over normaliseren. Getallen in veldnamen en meerdere tabellen die aan elkaar gerelateerd zijn een adres geven zijn beiden redelijk duidelijke tekenen van een slecht opgezette database.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Bedankt voor de tip ik ga dan naar die update met SET en join kijken.

en over normaliseren.
Het gaat hier om Microsoft CRM die alles in honderd tabellen gooit, kan er ook niks aan doen :)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Die query komt trouwens uit de losse pols, niet zomaar uitvoeren zonder te checken of het überhaupt wel doet wat je wil. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Haan
  • Registratie: Februari 2004
  • Laatst online: 17:15

Haan

dotnetter

NMe schreef op donderdag 10 september 2009 @ 16:33:
Maar goed, ga eerste eens wat lezen over normaliseren. Getallen in veldnamen en meerdere tabellen die aan elkaar gerelateerd zijn een adres geven zijn beiden redelijk duidelijke tekenen van een slecht opgezette database.
offtopic:
Ik heb wel wat kennis van het desbetreffende database ontwerp.

In het geval van MS CRM is het gebruik van getallen in veldnamen een keuze die ze hebben moeten maken om alles customizable te houden. Ik loop er zelf bijna dagelijks tegenaan dat je weer moet opzoeken in de metadata wat er bedoeld wordt met telephone1,2 of 3. Nog leuker is het gebruik van de velden address1_line1/_line2/_line3 en address2_line1/_line2/_line3 waarmee je op een account bijv. een post- en bezoekadres kan hebben, of bijv. ipv van bezoekadres een factuuradres. Met fixed veldnamen heb je daar een probleem, maar nu heb je sowieso nooit een idee wat wat is :P

De adrestabel waar de TS het over heeft, is nodig voor als je meer dan de twee standaard adressen wilt gebruiken, dus bijv. als je een bezoek-, post- en factuuradres nodig hebt, stop je eentje in de extra adres tabel.

Verder zit het database model behoorlijk netjes in elkaar vind ik zelf, zeker als je vergelijkt met bijv. SharePoint waarin je nooit meer iets terug kan vinden als het er via de site in is gegaan :/

Kater? Eerst water, de rest komt later


Verwijderd

Topicstarter
HAah heb het even met een test geprobeerd, maar alle rows hebben nu het zelfde telefoon nummer :)

toch nog even verder uitzoeken dan :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is lukt :D

dit is de code die ik gebruikt het
Bedankt voor het denken in de goede richting

code:
1
2
3
4
5
6
7
8
UPDATE Accounts
SET Telephone1 =    ( SELECT Addresses.Telephone1
FROM Addresses
WHERE ObjectTypeCode = '1' AND AddressNumber = '1' AND Addresses.ParentID = Accounts.AccountId)
WHERE EXISTS
  ( SELECT Addresses.Telephone1
    FROM Addresses
    WHERE Addresses.ParentId = Accounts.AccountId);

[ Voor 5% gewijzigd door Verwijderd op 11-09-2009 13:32 ]

Pagina: 1