Centar za edukaciju-BiH



#1 03.05.2017 13:53
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:MYSQupit za polja u koloni imaju imena drugih tabli
imam tablu sa vrijednostima koje su imena drugih tabli

tabla
------------------------
datum | imeTable
2017-04-01 | tabla_2
2017-04-02 | tabla_2
2017-04-03 | tabla_3
2017-04-04 | tabla_4
2017-04-05 | tabla_4

htio bi spojiti (joined) tablu_1 sa drugim tablama (tabla_2 ... tabla_5)
ovisno o vrijednost

tabla_1
-------------------------
datum | artikal
2017-04-01 | 212
2017-04-02 | 315
2017-04-03 | 403
2017-04-04 | 503
2017-04-05 | 101

tabla_2
--------------------------
artikal | iznos_kn
212 | 10
315 | 12
403 | 11
503 | 14
101 | 16

tabla_3
--------------------------
artikal | iznos_kn
212 | 15
315 | 16
403 | 19
503 | 20
101 | 26

tabla_4
--------------------------
artikal | iznos_kn
212 | 30
315 | 32
403 | 31
503 | 34
101 | 36

primjer:
za datum 2017-04-01 za artikal 212 vrijednost u kn ce biti 10kn,
a ako je datum 2017-04-05 onda je njegova vrijednost 30kn.

Znam da se nekako moze to, na internetu govore o dinamickom upitu
ali mi nije bas jasno, savjetuju da se umjesto dinamickog upita
upotrebe "relationships" ali mi ni to nije jasno.
Pa moze li netko pomoc, netreba objasnjavat samo sql upit.
zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 04.05.2017 08:38 od strane Avko. ↑  ↓

#2 04.05.2017 14:18
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,854


Predmet:Re: MYSQupit za polja u koloni imaju imena drugih tabli
SELECT tabela.datum,tabela_2.Iznos_kn FROM tabela_2
INNER JOIN tabela
ON tabela.artikal = tabela_2.artikal

Probaj ovako
↑  ↓

#3 09.05.2017 12:07
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: MYSQupit za polja u koloni imaju imena drugih tabli
nece, a jeli mozes reci zasto ovo nece

radim localno
prvo upisem ovo:

select * from proba.tabla

to radi. Onda upisem ovo:

set @sql_text := 'select * from proba.tabla'
prepare stmt from @sql_text
execute stmt


to nece, javi gresku:

SQL upit: Dokumentacija
SET @sql_text := 'select * from proba.tabla'prepare stmt FROM @sql_text EXECUTE stmt
MySQL je poručio: Dokumentacija
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'prepare stmt from @sql_text
execute stmt' at line 2

onda stavim ovako, tocka zarez iza svake naredbe:
set @sql_text := 'select * from proba.tabla';
prepare stmt from @sql_text;
execute stmt;


dobijem ovo:
Vaš SQL upit uspješno je izvršen
SQL upit:
SET @sql_text := 'select * from proba.tabla';# MySQL je vratio prazan komplet rezultata (npr. nula redova).
prepare stmt FROM @sql_text ;# MySQL je vratio prazan komplet rezultata (npr. nula redova).
EXECUTE stmt;# Redaka: 5

ali nema ispisa rezultata?
zivot je moja domovina.
↑  ↓

#4 09.05.2017 16:33
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,854


Predmet:Re: MYSQupit za polja u koloni imaju imena drugih tabli
proba najvrovatno se zove baza gde se nalaze tabeli.
ovo tvoje bi trebalo da radi ovako : select * from tabla

evo probaj ovo

SELECT proba.tabela.datum,proba.tabela_2.Iznos_kn FROM proba.tabela_2
INNER JOIN proba.tabela
ON proba.tabela.artikal = proba.tabela_2.artikal

ovo sto ti radis
set @sql_text := 'select * from proba.tabla';
prepare stmt from @sql_text;
execute stmt;


se koristi kad zelis query da ispises u neki string pa kasnije taj string da ga izvrsis.
Ja ovakve stvari koristim kad imam dinamicki queri odnosno queri koe mejna svoju strukturu zavisno od kriterija.
↑  ↓

#5 09.05.2017 18:07
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: MYSQupit za polja u koloni imaju imena drugih tabli
i znas li zasto moje ne radi?
zivot je moja domovina.
↑  ↓

#6 09.05.2017 23:49
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,854


Predmet:Re: MYSQupit za polja u koloni imaju imena drugih tabli
Kako ovo radi u My SQL ja ne znam , ja sam ovo radio u MS SQL.
Moj sovt je da to resis na klasican nacin jer radi brze nego ovo sta si ti postavio.
Ako bas zelis resiti ovako reci i ja cu pogldati kako s to tacno radi pa resicemo to.
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 12: 22 am.