Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 14 odgovora
  • 4.848 pregleda

Najnovija ↓

MySQL, SELECT i JOIN(s) pitanje... 23.11.2003. u 13:41 · pre 279 meseci #1
Elem imam problem koji sam resio pesacki jer ne znam da ga resim elegantno, pa stoga molim nekog SQL gurua koji uz put dobro poznaje MySQL da mi pomogne...

Napomena: koristim MySQL 3.23.39 .

Imam dve tabele koje su veoma slicne
tabela "produkt1" ima ove kolone: ID, NAME
tabela "produkt2" ima ove kolone: ID, NAMN

Problem koji ja imam je - zelim da spojim obe tabele u jednu jedinu (SELECT rezultat jelte) . Problem mi je zapravo sto se druga kolona u drugoj tabeli zove drugacije i ne smem da promenim njen naziv da bih odradio prosti JOIN. Ne znam u MySQL kako reci da su NAME i NAMN jedna te ista kolona prilikom JOIN-a. Nazalost UNION u ovoj verziji ne postoji da bih eventualno spojio dva ista rezultata u jedan.

Svaki konstruktivan predlog je dobrodosao. Pozdrav svima.
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: MySQL, SELECT i JOIN(s) pitanje... 23.11.2003. u 14:53 · pre 279 meseci #2
JOIN i UNION nemaju veze jedno s' drugim pa sam zbunjen tvojim problemom ...
Da li bi mogao da navedes konkretan primer sa nekoliko n-torki u tabelama i rezultat koji zelis da dobijes?
Potpis
Sve sto je besmislenije, utoliko je bolje.
Re: MySQL, SELECT i JOIN(s) pitanje... 23.11.2003. u 15:09 · pre 279 meseci #3
Znam ja da nemaju veze, ali u ovom slucaju mogu da imaju veze...
evo tabela:

tabela produkt1 (id, name):
1, 'tastatura'
2, 'mis'
3, 'monitor'

tabela produkt2 (id, namn):

55, 'stampac'
131, 'RS232C kabl 5m'
1111, 'mouse pad'

Zelim da spojim ove tabele i dobijem rezultat: (id, name):
1, 'tastatura'
2, 'mis'
3, 'monitor'
55, 'stampac'
131, 'RS232C kabl 5m'
1111, 'mouse pad'

Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: MySQL, SELECT i JOIN(s) pitanje... 23.11.2003. u 19:47 · pre 279 meseci #4
Napravis privremenu tabelu odgovarajuce strukture pa dvaput odradis select into table...

Pedja
Re: MySQL, SELECT i JOIN(s) pitanje... 23.11.2003. u 21:06 · pre 279 meseci #6
UNION je jedini moguci nacin za koji ja znam, tako da mozda je bolje da trazis neku alternativu. A verovatno ces morati preko minimum dva upita:(
Poz
p.s. nada se da gresim
Re: MySQL, SELECT i JOIN(s) pitanje... 23.11.2003. u 21:24 · pre 279 meseci #7
Stvar je u tome da sam ja ziveo u ubedjenju da se mogu izbeci dva INSERT-a u privremenu tabelu. S obzirom da niko nije dao resenje, a i ja se, naravno, nisam setio nicega, ostaje mi moje resenje u kome dva SELECT rezultata "snimim" u jedan jedini asocijativni niz...
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: MySQL, SELECT i JOIN(s) pitanje... 23.11.2003. u 21:47 · pre 279 meseci #8
SELECT t1.* t2.* FROM tabela1 AS t1 LEFT JOIN tabela2 AS t2 ON (t2.neka_kolona = t1.ime_neke_kolone) WHERE ...

naravno, neka_kolona i ime_neke_kolone mogu biti proizvoljne kolone koje moraju imati isti tip (INT - INT, CHAR - CHAR) ...

ako se zovu isto onda mozes
USING (ime_iste_kolone)

Ovo je odgovor na prvo pitanje, ali tek sada sam video da si pitanje preformulisao pa trazis nesto drugo.
Potpis
Goran Pilipović fka bluesman
Re: MySQL, SELECT i JOIN(s) pitanje... 23.11.2003. u 22:40 · pre 279 meseci #9
Ne, nigde nisam preformulisao pitanje, problem ostaje i dalje isti. Probacu da odradim posao na taj nacin, ali cisto sumnjam, jer onaj tvoj SQL kod ne radi ono sto sam ja rekao u polaznom tekstu. Svejedno hvala! :-)
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: MySQL, SELECT i JOIN(s) pitanje... 23.11.2003. u 22:55 · pre 279 meseci #10
Da malo pojasnim zasto ovo gore ne daje dobar rezultat...
Prosto onaj gore statement ce napraviti kao rezultat tabelu sa svim kolonama iz jedne i druge tabele, sto ja ne zelim, ja zelim samo dve kolone iz dve tabele, od kojih se prva (id) kolona zove ISTO u obe tabele, a druga kolona se zove razlicito - u jednoj "name" u drugoj "namn"...
Da, kolone su naravno istog tipa, i nema istih redova u tabelama gde su "id"-jevi isti! :-)
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: MySQL, SELECT i JOIN(s) pitanje... 24.11.2003. u 02:22 · pre 279 meseci #11
Ne znam kolko ja razumem ali mozda pomogne nesto poput

SELECT kol1, kol2, tab2.col1 as STH FROM tab1 INNER JOIN tab2 ON tab1.id=tab2.id


Odnosno samo da promenis ime polju.... Jel to treba?
Re: MySQL, SELECT i JOIN(s) pitanje... 24.11.2003. u 09:28 · pre 279 meseci #12
Interesantan problem.
Moj predlog ti je prikacen uz poruku.
Priznajem da nije elegantno resenje, ali je tu negde sa trenutnim koji koristis ...
Potpis
Sve sto je besmislenije, utoliko je bolje.
Re: MySQL, SELECT i JOIN(s) pitanje... 25.11.2003. u 03:55 · pre 279 meseci #13
Citat:
leka:
Ne, nigde nisam preformulisao pitanje, problem ostaje i dalje isti. Probacu da odradim posao na taj nacin, ali cisto sumnjam, jer onaj tvoj SQL kod ne radi ono sto sam ja rekao u polaznom tekstu. Svejedno hvala! :-)


Ma jasno mi je bilo dok sam pisao, ali posto sam vec bio napisao gre'ota fa se baci :-))

Ne moze da skodi, a ako ne skodi... :-))
Potpis
Goran Pilipović fka bluesman
Re: MySQL, SELECT i JOIN(s) pitanje... 25.11.2003. u 14:46 · pre 279 meseci #14
Pa tako sam vec i sam resio svoj problem. Ali sam mislio (kao sto pise u prvoj poruci) da postoji elegantnije resenje... :(

Citat:
overflow:
Interesantan problem.
Moj predlog ti je prikacen uz poruku.
Priznajem da nije elegantno resenje, ali je tu negde sa trenutnim koji koristis ...

Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: MySQL, SELECT i JOIN(s) pitanje... 26.11.2003. u 11:49 · pre 279 meseci #15
Evo nesto drugaciji prustup, bez pomocne tabele.

U svaku do tabela se doda slog sa istim ID-om koji sluzi za filtriranje kao nepotreban.
Evo primera podataka. U ovom primeru je uzeot da slgo sa ID-om 0 sluzi za filtriranje. To znaci da ne sme da postoji slog koji koristi taj id.

Code:

DROP TABLE IF EXISTS t1;
CREATE TABLE `t1` (
  `id` tinyint(3) unsigned default '0',
  `desc1` varchar(10) default NULL
) ENGINE=MyISAM;
INSERT INTO t1 VALUES("1", "Val1-1");
INSERT INTO t1 VALUES("3", "Val1-3");
INSERT INTO t1 VALUES("5", "Val1-5");
INSERT INTO t1 VALUES("7", "Val1-7");
INSERT INTO t1 VALUES("8", "Val1-8");
INSERT INTO t1 VALUES("0", "zero");

DROP TABLE IF EXISTS t2;
CREATE TABLE `t2` (
  `id` tinyint(3) unsigned default '0',
  `desc2` varchar(20) default NULL
) ENGINE=MyISAM;
INSERT INTO t2 VALUES("2", "Val2-2");
INSERT INTO t2 VALUES("4", "Val2-4");
INSERT INTO t2 VALUES("6", "Val2-6");
INSERT INTO t2 VALUES("8", "Val2-8");
INSERT INTO t2 VALUES("0", "zero");


Code:

select IF(t1.id <> 0,t1.id,t2.id) AS tid, IF(t1.id <> 0,t1.desc1,t2.desc2) AS tdesc from t1,t2
WHERE (t1.id <> t2.id) AND ((t1.id = 0) OR (t2.id=0))


Mada ja i dalje mislim da je najelegantije uraditi select u privremenu tabelu. :)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme