Jak połączyć te bazy / MySQL

Odpowiedz Nowy wątek
2015-01-21 13:51
0

Witam, na wstępie chciałbym powiedzieć że nie jestem zaawansowanym użytkownikiem SQL'a więc wybaczcie jeżeli będe pisał nie profesjonalnie.

Nie jestem do końca przekonany czy moje pytanie dotyczy MySQL'a :)
używam SQL'a do tworzenia query działających w Excellu, jestetm jedynie użytkownikiem baz co oznacza że mogę je jedynie odczytywać nie ingerując w ich strukturę.

Mój problem jest następujący.

Mam 3 bazy.
Pierwsza ma taką strukturę: Item | Kraj | Dostepność
Druga: Item | Kraj | Ilość zamówiona
Trzecia: Item | Opis itemu

Pierwsza pokazuję jaką mamy dostępność poszczególnych itemów w konkretnym kraju.
Druga pokazuje jaka ilość danego itemu została zamówiona w danym kraju.
Trzecia pokazuje wszystkie dostępne itemy wraz z ich słowmym opisem

Pierwsza i druga baza mają części wspólne ale również są w nich takie linie które są unikalne tylko dla jedenj bazy.

Potrzebuję złączyć jes w jakiś magiczny sposób aby finalnie wyglądało to tak:
Item | Opis | Kraj | Ilość dostępna | ilość zamówiona

Kombinowałem z joinami i union ale zawsze dochodze do takiego momentu że mam tylko itemy które są wspólne dla wszystkich trzech.

I pytanie poboczne - dlaczego to nie działa?

select
d.year
from
(select
a.yearpr as year, a.compmk as company, left(a.ITMNBR,5) as item
from CFCQXP a
where a.compmk in ('0100','UK','NODS') and a.yearpr =?
group by a.yearpr, a.compmk, a.ITMNBR

union

select b.yearpr, b.compin, b.toynbr
from ISISDTA.PMADMP b
where b.yearpr=? and b.compin in ('0100','UK','NODS')
group by b.yearpr, b.compin, b.toynbr
) d

a taki zapis już tak

select
d.year
from
(select
a.yearpr as year, a.compmk as company, left(a.ITMNBR,5) as item
from CFCQXP a
where a.compmk in ('0100','UK','NODS') and a.yearpr =?
group by a.yearpr, a.compmk, a.ITMNBR

union

select b.yearpr, b.compin, b.toynbr
from ISISDTA.PMADMP b
where b.yearpr=? and b.compin in ('0100','UK','NODS')
group by b.yearpr, b.compin, b.toynbr
) d

komunikat jaki dostaję to:
Column year not in table D in*N

Będe wdzięczny za podpowiedzi

A weź wstaw kod w tagi <code="sql"></code> - somekind 2015-01-21 15:13

Pozostało 580 znaków

2015-01-21 18:51
0
select item,opis, kraj,sum(zamowienie) as zamowienie ,SUM(dostepnosc) as dostepnosc   from 
     (SELECT  TRZECIA.item,trzecia.opis,PIERWSZA.kraj, 0 as zamowienie,pierwsza.dostepnosc   from trzecia ,pierwsza
              where trzecia.item=pierwsza.item 
    union  
      SELECT   TRZECIA.item,trzecia.opis,druga.kraj,druga.zamowienie, 0 as dostepnosc  from trzecia ,druga  
              where trzecia.item=druga.item )
group by item,opis,kraj 

testowałem na bazie Firebird ,nie wiem jak zadziała pod Accessem/Excelem

edytowany 2x, ostatnio: grzegorz_so, 2015-01-21 18:55

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0