[SQL] Mergen van 2 tables

Pagina: 1
Acties:

  • jhollez
  • Registratie: Oktober 2004
  • Laatst online: 29-09 13:15
Het probleem is hetvolgende. We zitten met een tabel (tabel 1) gegenereerde data en de bedoeling is een "patch" tabel (tabel 2) toe te voegen die dezelfde kolommen heeft. Alle velden zijn daarin null, behalve de PK en velden waarvan men wenst dat deze waarde gebruikt wordt ipv de waarde die in tabel 1 zit. Deze 2 tabellen aanmaken vormt geen enkel probleem. Het probleem is dat we nu een derde tabel willen waarin deze data gecombineerd is. Dit is idealiter een view. Ik vraag mij af of zoiets efficient mogelijk is in sql. De manier van combineren is als volgt: neem de waardes uit tabel 1 en overschrijf daarvan alle velden die ook in tabel 2 zitten als die niet null zijn. Het probleem zit hem dus dat voor 1 bepaalde rij het ene veld uit tabel 1 komt en het andere uit tabel 2

vb

tabel 1

pk k1 k2 k3
1 10 test 5
2 20 test2 6

tabel 2
pk k1 k2 k3
2 null testje null

tabel/view 3 moet dan zijn:
pk k1 k2 k3
1 10 test 5
2 20 testje 6

Alle adviezen worden op prijs gesteld :)

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
tabel 1 left join met tabel 2, COALESCE() in je select en klaar ben je.

{signature}


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:08
Ik had het niet beter kunnen verwoorden 8)

Roomba E5 te koop


  • jhollez
  • Registratie: Oktober 2004
  • Laatst online: 29-09 13:15
Hartelijk bedankt!! Dit is perfect wat ik nodig heb.

Voor de mensen die graag de resulterende query zien:
SQL:
1
2
3
SELECT tabel1.pk, COALESCE(tabel2.k1,tabel1.k1), COALESCE(tabel2.k2,tabel1.k2), COALESCE(tabel2.k3,tabel1.k3)
FROM tabel1
LEFT JOIN tabel2 ON tabel1.pk = tabel2.pk;

[ Voor 4% gewijzigd door jhollez op 27-05-2008 14:46 . Reden: Code tags aangepast ]


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:08
Kijk nog eens goed naar je query?

Roomba E5 te koop


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Een kolom staat er dubbel in, maar het is uberhaupt obvious dat het fictieve kolomnamen zijn. Althans, dat hoop ik. :P

{signature}


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • jhollez
  • Registratie: Oktober 2004
  • Laatst online: 29-09 13:15
Voutloos schreef op dinsdag 27 mei 2008 @ 12:50:
Een kolom staat er dubbel in, maar het is uberhaupt obvious dat het fictieve kolomnamen zijn. Althans, dat hoop ik. :P
Zijn idd de fictieve kolommen hier van uit het voorbeeld. De query is nu aangepast ;)

Nog eens bedankt ;)

Verwijderd

Ik heb hetzelfde probleem in HQL. Ik wil een gelijkaardige query in HQL krijgen mbv een left join. Maar deze tabellen zijn zoals hier niet gerelateerd met elkaar. Blijkbaar is het niet mogelijk in HQL om unrelaterd tables te joinen. Is er hier een workaround voor?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Zonder relatie weet je toch niet absoluut niet welke teksten bij elkaar horen? 8)7
Ik vermoed dat er toch een relatie is, of je hebt een compleet ander probleem. Wellicht handig om een eigen topic te openen, maar dan moet je wel een stuk eer info geven over je datamodel en wat je nu al qua query voor elkaar hebt cq geprobeerd hebt.

{signature}

Pagina: 1