[SQL] rijen samenvoegen?

Pagina: 1
Acties:
  • 372 views sinds 30-01-2008
  • Reageer

  • Moriaty
  • Registratie: December 1999
  • Laatst online: 11-08 14:06
ik heb een aantal insert into's in mijn database gedaan. Nu wil ik deze "samenvoegen" tot 1 regel. Hoe kan ik dat het gemakkelijkst doen? Het gaat namelijk om heel veel variabelen dus een * zou gemakkelijk zijn :)

het ziet er als volgt uit:
code:
1
2
3
4
5
6
7
id    naam    adres    woonplaats   var1   var2    var3
-------------------------------------------------------
1     henk
1        maan
1               amsterdam
2     jan     aarde
2               rotterdam

wat ik dus wil is alles met id 1 tot 1 regel samenvoegen en daarna de oude id1 verwijderen. Het komt niet voor dat velden dubbel zijn ingevuld.

Iemand tips? omdat var1-var100 overtikken in een update query heeeel erg veel werk is zoek ik een afkorting :)

"640K ought to be enough for anybody." - Bill Gates, 1981


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:42
records die geen uniek id hebben ... iew.

https://fgheysels.github.io/


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Wat heb je dat ongelofelijk wazig gedaan zeg..
Misschien is het mogelijk met een trigger ofzo, maar dat lijkt me sterk..
Wat, denk ik, een grotere kans van slagen heeft zoiets als alles spoolen naar een tekst-bestand en dan een programmaatje schrijven om een insert script te genereren.

  • PdeHoog
  • Registratie: December 2001
  • Laatst online: 23-09-2024
Volgens mij gaat je dit niet lukken in SQL en kun je beter bijvoorbeeld een programmaatje in VB schrijven die dit doet.

Ik weet natuurlijk niets van de invoerkant af, maar volgens mij gaat de invoer niet op de meest efficiente methode :+

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Je kunt een update doen van alle records met hetzelfde id maar kolom is null where kolom is not null.
En dat dus voor 2 van de drie kolommen.
En dan alle rijen verwijderen waar kolom 3 is null.

Who is John Galt?


  • Mc.Boldy
  • Registratie: Januari 2000
  • Laatst online: 08-08 10:54

Mc.Boldy

Chopperfreak without chopper

Op dinsdag 23 april 2002 13:12 schreef justmental het volgende:
Je kunt een update doen van alle records met hetzelfde id maar kolom is null where kolom is not null.
En dat dus voor 2 van de drie kolommen.
En dan alle rijen verwijderen waar kolom 3 is null.
en maak daarna in GoTsnaam die id uniek |:(

https://jobs.sap.com/search/?createNewAlert=false&q=&locationsearch=%27s-Hertogenbosch&optionsFacetsDD_department=&optionsFacetsDD_customfield3=&optionsFacetsDD_country=


  • Unipuma
  • Registratie: Juli 2001
  • Laatst online: 06-04-2021
Het makkelijkste lijkt me om alles in een nieuwe tabel te deponeren.

Cursor openen over de huidige tabel, gebaseerd op het huidige ID, gegevens selecteren waar veld NOT ISNULL, en dat inserten in de nieuwe tabel.

Kleine tip, maak volgende keer je ID primary key en ook identity, dan kan je dit niet nogmaals overkomen.

So much fun, it's a miracle it isn't declared illegal: driving a motorcycle


  • Moriaty
  • Registratie: December 1999
  • Laatst online: 11-08 14:06
id in bovenstaand overzicht is een "2e" id waardoor ik kan zien welke velden bij elkaar horen. Natuurlijk is er ook een unieke key.

Probleem is dus dat ik een enquete heb gemaakt waarvan de resultaten in een databeest worden gegooid. Er zijn ca 200 variabelen en ik heb ze dus mooi allemaal via insert into de database gepropt met bovenstaand resultaat :)

eerste idee was dus om die instert into's daarna in updates te veranderen alleen nu is die update statement qua opmaak ZO anders dan de insert into dat dit erg bewerkelijk is. Vandaar mijn vraag. En ja, ik had daar eigenlijk van tevoren aan moeten denken maar daar heb ik nu niets meer aan :)

Kan het niet op een of andere manier gegroepeerd worden ofzo?

Overigens allen die al hebben gereageerd: bedankt.

"640K ought to be enough for anybody." - Bill Gates, 1981


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

code:
1
2
3
4
5
6
select id
    ,max(veld1)
    ,max(veld2)
    ,max(veld3)
from   tabel
group by id

lijkt me toch eenvoudig, niet dan?

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Op dinsdag 23 april 2002 19:53 schreef Goodielover het volgende:
code:
1
2
3
4
5
6
select id
    ,max(veld1)
    ,max(veld2)
    ,max(veld3)
from   tabel
group by id

lijkt me toch eenvoudig, niet dan?
Hmm, best goed idee eigenlijk! Vraag me eigenlijk af of je wel MAX() kan gebruiken op niet numerieke velden .. is dat database specifiek of wat?

  • Moriaty
  • Registratie: December 1999
  • Laatst online: 11-08 14:06
merci Goodielover, een goede tip. Alleen moet ik dan helaas nog alle velden gaan overnemen wat erg bewerkelijk is.
Gisteravond heb ik anderhalf uur besteed aan het omzetten van de INSERT INTO's naar UPDATE's en alles werkt nu zoals het hoort.

"640K ought to be enough for anybody." - Bill Gates, 1981

Pagina: 1