SQL : Samenvoegen tabellen met ongelijk aantal variablen

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

  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 12:55
voorbeeld

Tabel1

A
B
C
D

Tabel 2

A
B
C
D
E
F

Ik wil dus tabel 1 en tabel 2 samenvoegen.

een union gaat niet op volgens mij omdat deze een gelijk aantal variablen verwacht , een table union wil ook niet om dezelfde reden.

is hier een truc voor


Reeds gezocht op Merge SQL , Samenvoegen SQL , maar kwam niets tegen over samenvoegen van 2 tabellen waarvan er 1 meer variablen heeft dan de ander

[ Voor 0% gewijzigd door Morpheus_at_work op 24-09-2002 11:53 . Reden: duidelijker gemaakt vooral iemand gaat zoeken ;) ]

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
Leeg eens goed en duidelijk uit wat je precies wilt.
Zie ook :
Welkom in P&W -> Quickstart om snel aan de slag te kunnen

Je wilt een select doen op beide tabellen en deze in 1 resultset krijgen?

Je kunt doen:
code:
1
2
3
4
5
select a, b, c, d, "", ""      // strings vervangen door 0 als e en f in table2 numeriek zijn
from tabel1
union
select a, b, c, d, e, f
from tabel2

https://fgheysels.github.io/


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

select A, B, C, D, NULL, NULL from table1
union
select A, B, C, D, E, F from table2

en nu uitleggen waarom je union niet kunt gebruiken :+
Of misschien eerst wat je precies wilt.
edit:

Darn whoami, niet stiekem je post editten

  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 12:55
ACM schreef op 24 september 2002 @ 11:53:
select A, B, C, D, NULL, NULL from table1
union
select A, B, C, D, E, F from table2

en nu uitleggen waarom je union niet kunt gebruiken :+
Of misschien eerst wat je precies wilt.
edit:

Darn whoami, niet stiekem je post editten
ik wist niet dat je NULL, NULL of "" kon gebruiken in een union om een lege variable te maken :D

tnx weer wat geleerd

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
Morpheus_at_work schreef op 24 september 2002 @ 11:54:
[...]


ik wist niet dat je NULL, NULL of "" kon gebruiken in een union om een lege variable te maken :D

tnx weer wat geleerd


Je kunt dat altijd doen in een select.

ACM: mapt ie die null dan naar het overeenkomstige data-type ofzo? Ik dacht dat, als je een union deed, zowel het aantal velden als de veldtypes overeen moesten komen?

https://fgheysels.github.io/


  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 12:55
Morpheus_at_work schreef op 24 september 2002 @ 11:54:
[...]


ik wist niet dat je NULL, NULL of "" kon gebruiken in een union om een lege variable te maken :D

tnx weer wat geleerd
bevindingen zijn prima

select A, B, C, D, NULL, NULL from table1
union
select A, B, C, D, E, F from table2

werkt prima maar hij maar van NULL een Expr1004 en Expr1005 , maar dit opgelost door

select A, B, C, D, NULL AS E , NULL AS F from table1
union
select A, B, C, D, E, F from table2

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

whoami schreef op 24 september 2002 @ 11:56:
ACM: mapt ie die null dan naar het overeenkomstige data-type ofzo? Ik dacht dat, als je een union deed, zowel het aantal velden als de veldtypes overeen moesten komen?

Zal van de database afhangen of ie het accepteerd, officieel moet je idd geloof ik de veldtypes overeen laten komen.

Ik heb het ook niet getest hoor :+

Owja, de veldnamen moesten (ook) overeen komen :)

  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 12:55
ACM schreef op 24 september 2002 @ 11:58:

[...]

Zal van de database afhangen of ie het accepteerd, officieel moet je idd geloof ik de veldtypes overeen laten komen.

Ik heb het ook niet getest hoor :+

Owja, de veldnamen moesten (ook) overeen komen :)
even getest in sql server en access , daarbij werkt het combinen ook als het veld type niet overeenkomt , schijnbaar maken ze van numerieke velden automatisch alfanumerieke velden

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8


  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

Zou je dit ook niet kunnen doen met eeen INNER JOIN?

Grts Marc

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Je kan wel veel meer doen in een SELECT Statement...

Hier heb ik bijvoorbeeld een ransige oplossing om een ; (puntkomma) separated file te maken binnen PL/SQL...
SQL:
1
2
3
4
5
6
7
8
9
SELECT dummy.ID   ID,
 'HEAD'    ||
 c_separator   ||
 dummy.dummyWaarde1   ||
 c_separator           ||
 dummy.dummyWaarde2       ||
 c_separator           ||
 dummy.dummyWaarde3  HEADING
  FROM DummyTable   dummy

Hierbij is c_separator een constante waarde welke de ; bevat.

Voor deze query vragen we de HEADING op en kunnen we deze zo wegschrijven naar een bestand...

  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 12:55
intermusic schreef op 24 september 2002 @ 12:05:
Zou je dit ook niet kunnen doen met eeen INNER JOIN?

Grts Marc
nope lukt niet want dan moet je aangeven waar op je wilt joinen
en als je al gaat joinen dan worden de verkeerde gegevens aan elkaar vast geknoopt

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8

Pagina: 1