MySql - kombiniranje podataka iz više tablica

poruka: 10
|
čitano: 9.252
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
offline
MySql pomoć

Potrebna mi je pomoć vezano za mysql, tj.

 

Moj problem je u tome što mi mysql treba vratiti recordset koji je sastavljen iz više tablica, a želio bi izbjeći spajanje na bazu par puta iz programa da bi dobio što mi treba, pa sam mislio koristiti funkciju, view, proceduru ili nešto sl. Još jedna stvar ja bih trebao predati neki parametar po kojem ce recordset biti vracen(ili vise parametara). Molim za pomoć :)

 

P.S.

Imajte na umu da baš nemam iskustav u pisanju procedura, funcija ... ;)

A.D.
 
0 0 hvala 0
15 godina
offline
RE: MySql pomoć

ne treba ti nikakva procedura...

 

upit bi isao ovako

 

SELECT * FROM Tabela_1 INNER JOIN Tabela_2 ON Tabela_1.ID_Nesto = Tebela_2.ID_Nesto WHERE Tabela.ID_Nesto = 5

 

dakle inner join ti vraca podatke iz vise tablica (nisi ogranicen na 2 inner joina, mozes ih n napisat) koji su povezani sa nekakvim ID-em koji povezuje podatke izmedju tablica. Parametar po kojem filtriras podatke je WHERE (uvjet), takodjer mozes vise njih kombinirat npr

 

WHERE ime = 'ante' AND prezime = 'antic' //vraca sve iz tablice gdje se udovoljavaju oba uvjeta

 

ili

 

WHERE ime='ante" OR ime = 'ivo"... ako je iti jedan od ovih uvjeta ispunjen vraca ti taj red...

 

ima jos puno toga ali bih ti preporucio www.w3schools.com

I'm going woo woo
15 godina
offline
MySql pomoć

Hvala na trudu, problem je bio što nisam bio siguran jeli procedura ili sl., bolje riješenje od nekog innner joina. Odlucio sam se  za inner join i evo bas sam ga testirao i sve radi kao sat. Vadim podatke iz nekoliko tablica i pa sam se malo mucio sa uvijetima, ali sve je rijeseno!

A.D.
 
0 0 hvala 0
15 godina
neaktivan
offline
MySql pomoć

Pokušavam ubaciti podatke iz jedne tablice u drugu. Tj tablicu ZUPANIJA popunit s podatcima iz tablice POM_ZUP.

 

INSERT INTO ZUPANIJA (POS_BR, MJE_NAZIV,B_STAN, KISA, SUNCE)
SELECT POS_BR, MJE_NAZIV,B_STAN, KISA, SUNCE
FROM POM_ZUP;

 

Kada ovo napravim dobivam tablicu ali podatci iz druge nisu spojeni s  podatcima iz prve nego samo dodani ispod njih.

Many things can be preserved in alcohol. Dignity is not one of them.
Poruka je uređivana zadnji put sub 19.12.2009 21:11 (Emil-ri).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: MySql pomoć
Emil-ri kaže...

Pokušavam ubaciti podatke iz jedne tablice u drugu. Tj tablicu ZUPANIJA popunit s podatcima iz tablice POM_ZUP.

 

INSERT INTO ZUPANIJA (POS_BR, MJE_NAZIV,B_STAN, KISA, SUNCE)
SELECT POS_BR, MJE_NAZIV,B_STAN, KISA, SUNCE
FROM POM_ZUP;

 

Kada ovo napravim dobivam tablicu ali podatci iz druge nisu spojeni s  podatcima iz prve nego samo dodani ispod njih.

Ako sam te dobro shvatio, ti želiš povezati npr. Krapinu iz POM_ZUP, sa retkom Krapinska-zagorska županija iz tablice ZUPANIJA?

Ako je tako, onda ti je SQL krivi, jer u tom slučaju ne radiš INSERT, nego UPDATE tablice ZUPANIJA.

INSERT dodaje na "kraj" ono što mu zadaš i to je upravo uradio.

Ono što tebi u tom slučaju treba je veza između jedne i druge tablice, te preko toga napraviti UPDATE. Ne znam kako ti izgleda tablica POM_ZUP, pa ne znam kako da ti dodatno pomognem?

 

Makar ako ti SELECT * ZUPANIJA; prikazuje entitete prikazane na slici, čini mi se da si loše rasporedio podatke u tablici?

Po meni u županijama ne bi trebali biti podaci o naseljima i njihovim poštanskim brojevima, tj. to bi trebale biti različite tablice, povezane relacijskom vezom PK-FK.

 

Recimo:

tablica ZUPANIJA

ID

NAZIV

 

tablica NASELJA

ID

NAZIV

ID_ZUPANIJA

 

i nakon toga napraviš PK-FK vezu preko ID-ID_ZUPANIJA.

 

Ako sam krivo shvatio tvoj problem, sorry.. probaj ga u tom slučaju još pojasniti.

Pozdrav.

UTERE SED NE ABUTERE!
15 godina
neaktivan
offline
RE: MySql pomoć

Da dobro si shvatio. Pokušavam ove dvije tablice spojiti.

 

Prvo dodam atribute koji mi fale u tablici ZUPANIJA a tablica POM_ZUP ih sadrzi.

 

ALTER TABLE ZUPANIJA ADD (POS_BR INT(5) NOT NULL, MJE_NAZIV VARCHAR(25),
B_STAN INT, KISA INT, SUNCE INT);

Te zatim pokusavam ubacit te podatkeiz druge tablice u prvu.


INSERT INTO ZUPANIJA (POS_BR, MJE_NAZIV,B_STAN, KISA, SUNCE)
SELECT POS_BR, MJE_NAZIV,B_STAN, KISA, SUNCE
FROM POM_ZUP;

Many things can be preserved in alcohol. Dignity is not one of them.
16 godina
neaktivan
offline
RE: MySql pomoć
Emil-ri kaže...

Da dobro si shvatio. Pokušavam ove dvije tablice spojiti.

 

Prvo dodam atribute koji mi fale u tablici ZUPANIJA a tablica POM_ZUP ih sadrzi.

 

ALTER TABLE ZUPANIJA ADD (POS_BR INT(5) NOT NULL, MJE_NAZIV VARCHAR(25),
B_STAN INT, KISA INT, SUNCE INT);

Te zatim pokusavam ubacit te podatkeiz druge tablice u prvu.


INSERT INTO ZUPANIJA (POS_BR, MJE_NAZIV,B_STAN, KISA, SUNCE)
SELECT POS_BR, MJE_NAZIV,B_STAN, KISA, SUNCE
FROM POM_ZUP;

Ok, sad mi ja malo jasnije.. tebi treba UPDATE upit, na temelju podataka iz druge tablice.

Ne znam je li informacija na ovom linku o MySQL Cross table update-u još aktualna, obzirom na verziju, ali mislim da je u MySQL-u sintaksa malo drukčija, nego u Oracle-u s kojim imam više iskustva. U Oracle-u bi naime sintaksa izgledala otprilike ovako:

 

UPDATE   ZUPANIJE Z
   SET   (Z.POS_BR,Z.MJE_NAZIV,Z.B_STAN,KISA,Z.SUNCE) =
            (SELECT   PZ.POS_BR,
                      PZ.MJE_NAZIV,
                      PZ.B_STAN,
                      PZ.KISA,
                      PZ.SUNCE
               FROM   POM_ZUP PZ
              WHERE   PZ.RBZ = Z.RBZ)
 WHERE   EXISTS (SELECT   PZ.POS_BR,
                          PZ.MJE_NAZIV,
                          PZ.B_STAN,
                          PZ.KISA,
                          PZ.SUNCE
                   FROM   POM_ZUP PZ
                  WHERE   PZ.RBZ = Z.RBZ);

 

Probaj nešto prekombinirati za MySQL i nadam se da ćeš riješiti svoj problem.

 

UTERE SED NE ABUTERE!
15 godina
neaktivan
offline
MySql - kombiniranje podataka iz više tablica

Probo sam nisam uspio ali Hvala na pokušaju.

Many things can be preserved in alcohol. Dignity is not one of them.
Moj PC  
0 0 hvala 0
16 godina
offline
RE: MySql - kombiniranje podataka iz više tablica

Zašto bi zelio to spojiti uopće?? Dakle zelis u tablici zupanije imati sve te podatke? Tablica pom_zup ti vise netreba??

 

EDIT: zasto imas rbz? primarni kljuc ti moze biti i postanski broj posto je jedinstven i nema potreba za uvođenjem rbz-a

 

EDIT 2: evo nesto nabrzinu

 

1.tablica zupanija(pos_br, naz_zup)

2.tablica pom_zup(pos_br, naz_zup,b_stan, kisa, sunce)

 

da bi prikazao podatke iz tablice zupanija nadopunjeni sa podacima iz zablice pom_zup napravio sam ovo:

 

select zupanija.pos_br, zupanija.naz_zup, pom_zup.b_stan, pom_zup.kisa, pom_zup.sunce
from zupanija
left outer join pom_zup on
zupanija.pos_br=pom_zup.pos_br;

 

ili

 

select zupanija.pos_br, zupanija.naz_zup, pom_zup.b_stan, pom_zup.kisa, pom_zup.sunce
from zupanija, pom_zup
where zupanija.pos_br=pom_zup.pos_br;

Poruka je uređivana zadnji put sri 23.12.2009 13:34 (AlterEgo).
15 godina
neaktivan
offline
RE: MySql - kombiniranje podataka iz više tablica

možda će pitanje biti glupo...

 

ali zašto trebaš imati duple podatke???

 

ako trebaš samo povezati tablice da bi imao prikazane sve podatke...u osnovnu tablicu samo stavi polje koje će ti sadržavati primary key od druge tabllice...i onda ih samo joinaš...

 

ne znam za myslq...koje joinove podržava...

inner join...povezuje sve...left join bi ti prikazao sve zapise osnovne tablice...sa pridruženim vrijednostima druge...

do something while necrknes
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice