Üdv!
Tudom már volt 1000 cikk, de bárhogy csinálom nem az az eredmény jön amit akarok, úgy hogy segítséget kérek.
(táblákból csak azt írom amit fel kell használni, többi úgyse releváns.
Tábla1:
id,datum
Tábla2:
id,termek_id,menny
Tábla3:
id,datum
Tábla4:
id,termek_id,menny
Feladat: adott időszakba adott termek_id kigyűjtése havonként.
elvileg full outer join kellene, de bárhogy csűröm csavarom mindig sql hiba.
pl.: select sum(tabla2.menny) as menny1, sum(tabla4.menny) as menny2
from tabla1,tabla2
join tabla3, tabla4
where tabla1.id=tabla2.id
and tabla3.id=tabla4.id
and tabla1.datum between '2010-01-01' and '2010-12-31'
and tabla3.datum between '2010-01-01' and '2010-12-31'
and tabla2.termek_id='1'
and tabla4.termek_id='1'
group by Month( tabla1.datum),Month(tabla3.datum)
nah így nem megy...
pch
- 1447 megtekintés
Hozzászólások
Hello!
Nem vagyok egy nagy sql expert ,de tanulmányaim szerint a táblák join-olásakor a mezőket ON-al szokták összekötni és nem where-el.
select sum(tabla2.menny) as menny1, sum(tabla4.menny) as menny2
from tabla1,tabla2
join tabla3, tabla4
on tabla1.id=tabla2.id
and tabla3.id=tabla4.id
and tabla1.datum between '2010-01-01' and '2010-12-31'
and tabla3.datum between '2010-01-01' and '2010-12-31'
and tabla2.termek_id='1'
and tabla4.termek_id='1'
group by Month( tabla1.datum),Month(tabla3.datum)
Üdv.
- A hozzászóláshoz be kell jelentkezni
Alapesetben édesmindegy, hogy JOIN ON-nal vagy WHERE-rel kötöd össze.
De JOIN-ból is van többféle, a vessző+WHERE az egyiknek (a keresztszorzatnak) felel meg.
- A hozzászóláshoz be kell jelentkezni
"syntax error..." ugye?
Az első két táblára ez működhet:
select t_id, sum(menny), extract(month from tabla1.datum) as honap
from tabla2 join tabla1 using(id)
where tabla1.datum between '11-01-01' and '11-01-31'
and t_id=1
group by extract(month from tabla1.datum), t_id;
Ennek alapján a másik táblára is meg tudod írni, aztán pl. a két lekérdezést UNION-nal egyesítheted.
gy
- A hozzászóláshoz be kell jelentkezni
Alakul, bár az union után nemtudom eldönteni mely adat honnan jött.
Lekérdezés:
SELECT sum( menny ) AS kimenny, Year( kimszallito.kelte ) AS kiyear, Month( kimszallito.kelte ) AS kimonth
FROM kimszallitocikklista, kimszallito
WHERE kimszallitocikklista.cikk_id = '1'
AND kimszallitocikklista.szallito_id = kimszallito.szallito_id
AND kimszallito.kelte between '2010-01-01' and '2011-01-31'
GROUP BY Month( kimszallito.kelte )
union
SELECT sum( menny ) AS bemenny, Year( beszallito.kelte ) AS beyear, Month( beszallito.kelte ) AS bemonth
FROM beszallitocikklista, beszallito
WHERE beszallitocikklista.cikk_id = '1'
AND beszallitocikklista.szallito_id = beszallito.szallito_id
AND beszallito.kelte between '2010-01-01' and '2011-01-31'
GROUP BY Month( beszallito.kelte )
kimenet:
kimenny kiyear kimonth
11 2010 3
3 2010 11
3 2010 12
100 2010 3
35 2010 12
míg önmagába az union előtti és utáni sorok is jók önmagukba.
pch
--
http://www.buster.hu
--
- A hozzászóláshoz be kell jelentkezni
nemtudom eldönteni mely adat honnan jött.
teszel bele mindkét selectbe plusz egy oszlopot, aminek az értékének egy konstanst írsz (select 'valami' as oszlopnev), és akkor azt is látni fogod az unionban, hogy melyik selectből jött.
- A hozzászóláshoz be kell jelentkezni
Fuggetlenul mindentol, az ON zaradek hasznalata ajanlott, ertsd: ne a WHERE utan parositsd a tablakat.
- A hozzászóláshoz be kell jelentkezni
select sum(tabla2.menny) as menny1
from tabla1 right join tabla2 on tabla1.id = tabla2.id
order by datum
mit mutat?
(írhatnál pár konkrét példa adatot, hogy lehessen vele szórakázni :D)
________________________________________________
http://kronosz.sinuslink.hu
- A hozzászóláshoz be kell jelentkezni
subscribe
- A hozzászóláshoz be kell jelentkezni
Valami ilyesmire gondoltál?
select sum(t2.menny) as menny1, sum(t4.menny) as menny2
FROM t1
INNER JOIN t2 on t1.id = t2.id
INNER JOIN t3 on t3.id = t2.id
LEFT OUTER JOIN t4 on t4.id = t3.id
WHERE t1.datum BETWEEN '2011-02-01' AND '2011-03-09'
group by Month( t1.datum)
stb...
- A hozzászóláshoz be kell jelentkezni