Sziasztok!
Adott két tábla:
első tábla:
datum |A |B
2010.01.01 |5 |NULL
2010.01.02 |6 |7
második tábla
datum |C |D
2010.01.01 |2 |7
2010.01.02 |1 |8
2010.01.03 |3 |4
a két táblából a következő eredménytáblára lenne szükségem:
datum |A |B |C |D
2010.01.01 |5 |NULL |2 |7
2010.01.02 |6 |7 |1 |8
2010.01.03 |NULL |NULL |3 |4
A két tábla használatával elő lehet állítani az eredmény táblát valahogy?
Vagy kell nekem egy harmadik tábla, ami tartalmazza az összes napot és ahhoz join-oljam a két táblát?
dátum tábla (pl):
datum
2010.01.01
2010.01.02
2010.01.03
...
...
...
2010.03.02
Ti hogyan oldanátok meg?
Köszi a válaszokat
Üdv,
bandorka
- 1259 megtekintés
Hozzászólások
hát, ma nem vagyok a helyzet magaslatán, de próbálok segíteni
SELECT TABLE1.*, TABLE2.C, TABLE2.D
FROM TABLE1 INNER JOIN TABLE2 ON (TABLE1.DATUM = TABLE2.DATUM)
ms sql szerveren ha létrehozol egy view-t, és az sql utasításba a fenti kódot beírod, akkor úgy fogod látni, mintha a view egy tábla lenne.
________________________________________________
http://kronosz.sinuslink.hu
- A hozzászóláshoz be kell jelentkezni
Igen ez is a cél, hogy legyen 1 view, amit viszont írtál, abban nem lesz benne 2010.01.03-i sor, ha jól látom. Ezért gondoltam egy harmadik segéd táblára.
köszi a választ
- A hozzászóláshoz be kell jelentkezni
Csak a pontosítás kedvéért
Mindkét táblából hiányozhatnak napok?
Egy nap ugyanabban a táblában csak egyszer fordulhat elő?
Szerk: Egyébként leírnád, hogy mit tárolsz, mivel nekem nem tűnik életszerűnek a dolog, vagy szerkezeti probléma van (lehet tényleg kell még egy tábla)
- A hozzászóláshoz be kell jelentkezni
Igen mindkét táblából hiányozhat, sőt (mea culpa) kiegészítem. 8 ilyen táblám (tehát az eredmény táblában lesz egy dátum oszlop, meg 16 egyéb oszlop - amiben a számok vannak) van és bármelyikből hiányozhat bármelyik nap, de az eredménynek tartalmaznia kell mindegyik napot, max NULL érték lesz az egyéb oszlopban.
Egy nap ugyanabban a táblában csak egyszer fordulhat elő.
- A hozzászóláshoz be kell jelentkezni
Using Outer Joins
--
geri / otperc.net
- A hozzászóláshoz be kell jelentkezni
köszi, megnézem
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Na, ma változott a felállás (kedves ügyfél kérésére), kicsit bonyolódott a drámai feszültség. Kifejtem:
"A" tábla
nap |nev |db_a |ido_a
2010.01.01 |AgentA |5 |80
2010.01.01 |AgentB |3 |60
2010.01.01 |AgentC |7 |120
2010.01.02 |AgentA |10 |200
2010.01.02 |AgentB |1 |10
"B" tábla:
nap |nev |db_b |ido_b
2010.01.01 |AgentA |2 |20
2010.01.01 |AgentB |4 |40
2010.01.01 |AgentD |6 |60
2010.01.02 |AgentA |8 |80
2010.01.02 |AgentB |10 |100
2010.01.02 |AgentC |12 |120
2010.01.03 |AgentA |14 |140
"C" tábla:
nap |nev |db_c |ido_c
2010.01.03 |AgentA |50 |2500
És ezt szeretnék:
nap |nev |db_a |ido_a |db_b |ido_b |db_c |ido_c
2010.01.01 |AgentA |5 |80 |2 |20 |NULL |NULL
2010.01.02 |AgentA |10 |200 |8 |80 |NULL |NULL
2010.01.03 |AgentA |NULL |NULL |14 |140 |50 |2500
2010.01.01 |AgentB |3 |60 |4 |40 |NULL |NULL
2010.01.02 |AgentB |1 |10 |10 |100 |NULL |NULL
2010.01.03 |AgentB |NULL |NULL |NULL |NULL |NULL |NULL
2010.01.01 |AgentC |7 |120 |NULL |NULL |NULL |NULL
2010.01.02 |AgentC |NULL |NULL |12 |120 |NULL |NULL
2010.01.03 |AgentC |NULL |NULL |NULL |NULL |NULL |NULL
2010.01.01 |AgentD |NULL |NULL |6 |60 |NULL |NULL
2010.01.02 |AgentD |NULL |NULL |NULL |NULL |NULL |NULL
2010.01.03 |AgentD |NULL |NULL |NULL |NULL |NULL |NULL
A,B,C táblában egy nap többször szerepelhet, de napon belül a név csak 1x. A darab és idő mezők összesített eredmények az aktuális napra az aktuális névhez - és minden táblában mást összegeznek. Az eredmény táblában a NULL helyett lehet 0 is és ahol minden érték NULL (vagy 0), az a sor elhagyható.
A végeredményre egy riportoló programnak van szüksége (ez tárolt eljárást nem tud hívni).
A feladat megoldására létezhet valamilyen join? Vagy állítsa elő az eredménytáblát egy naponta 1x futó SP, ami mindig feldolgozza az előző napi adagot?
Egyelőre a join-on molyolok, hátha...
ui: most csak 3 táblával modelleztem a problémát, de 8 táblát kell majd így feldolgozni.
Üdv,
bandorka
- A hozzászóláshoz be kell jelentkezni
Megoldva két lépésben. Először beletettem union-al 1 temp táblába az összes táblát, majd ebből group-olva a megfelelő mezőkre kijött a végeredmény.
- A hozzászóláshoz be kell jelentkezni