Kako spojiti dve tabele?

1

Kako spojiti dve tabele?

offline
  • Pridružio: 22 Feb 2005
  • Poruke: 282
  • Gde živiš: Šabac

Imam dve tabele koje bi trebalo da spojim samo ne znam kako to da izvedem u phpmyadmin-u.

Imam jednu tabelu(main) gde mi se nalaze 3 polja;id,ime,pol
A druga(pol) mi je;id,opis.

id.1
ime.pera
pol > pol.opis


id.1
opis.nepoznato
id.2
opis.musko
..............



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

ne moze tako, to je sve lose

tvoja main tabela treba da ima

id, ime (opis), pol (id)
Onda jos tabela Polovi: ID, opis pola

Onda, cemo da obelezimo ovako:

(main tabela - naziv "Imena")
IME_CdiIme, IME_DssIme, IME_CdiPol

(polovi)
POL_CdiPol, POL_DssPol



Spajanje:

SELECT IME_CdiIme, IME_DssIme, POL_DssPol FROM Imena
INNER JOIN Polovi on (POL_CdiPol = IME_CdiPol)



offline
  • Pridružio: 08 Jan 2007
  • Poruke: 279
  • Gde živiš: Srbija

Imaš više načina, beli0135 je dao svoje viđenje, a evo i mog...

Entiteti, polovi i recimo lica.

Relacije:
1) sif_pol
2) lica

Prefiks "sif_" dodaješ da se šifarnici, može ih biti više, razlikuju od ostalih relacija u bazi.

SQL:
-- sifarnik polova -- mozes postaviti i unique na atribut pol, da ne dozvolis ponavljanja, -- radi jednostavnosti primera to nisam uradio create table sif_pol (   id_pol integer not null,   pol varchar(7),   constraint pk_sif_pol primary key (id_pol) ); -- tabela u koju se unose lica create table lica (  id_lica integer not null,  ime varchar (20),  prezime varchar (20),  id_pol integer,  constraint pk_lica primary key (id_lica),  constraint fk_lica foreign key (id_pol)   references sif_pol (id_pol)    on update cascade    on delete restrict );
Sad se ostvaruje referencijalni integritet i tabele su povezane preko spoljašnjeg ključa, "foreign key".

Spajanje, recimo ovim upitom, za primer kroz poglede(view):
create view lica_upit1 as  select l.ime, l.prezime, sp.pol  from lica l, sif_pol sp  where l.id_pol = sp.id_pol
ili kao što je beli0135 naveo:
create view lica_upit2 as  select l.ime, l.prezime, sp.pol  from lica l   inner join sif_pol sp on l.id_pol = sp.id_pol
Kao što vidiš, slični odgovori, što je dokaz da se jedan problem može rešiti na više načina.

BTW, pisao sam iz glave...

offline
  • Pridružio: 22 Feb 2005
  • Poruke: 282
  • Gde živiš: Šabac

Hvala.
Ali nista ovde meni nije jasno..Radio sam i povezivao tabele u accesu ali mi ovde u sql nista ne ide..
Kako ja sad da vidim tu relaciju,sta da radim sa njim?Kako da je integrisem..

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Vidi ovako, relacije se prave SAMO po integer poljima, i ta polja:
1. u sopstvenoj tabeli su primarni kljuc (Primery Key - PK)
2. u drugoj tabeli je to integer polje koje ima index, i to se zove strani kljuc (foreign key - FK)

Primer
-----------
Tabela "boje", 2 polja, PK i opis, (koristicu jednostavno, da se ne gubis u nomenklaturi)
Boje_Id, Boje_Opis
popunjena je ovako

0, nista
1, bela
2, plava
3, crna


tabela "pastele", 3 polja. PK, FK za boje i opis
Pastele_Id, Pastele_boja_id, Pastele_opis

0, 0, nema_pastele
1, 1, faber_castel
2, 1, pelikan
3, 2, faber_castel
4, 1, Michelangelo


Kao sto vidis, ove 2 tabele su u relaciji, zato sto tabela "pastele" ima polje za vezivanje sa tabelom boje.

Ako analiziras, videces da postoje 2 faber_castel pastele, u beloj i plavoj boji, jedna pelikan pastela u beloj i jedna Michelangelo pastela u beloj.

Evo jednog obicnog select-a

SELECT Pastele_id, Boje_Opis, Pastele_opis FROM Pastele
INNER JOIN Boje ON (Pastele_Boja_id = Boja_id)
WHERE Pastele_id > 0

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

loshmi_sr :: create view lica_upit1 as  select l.ime, l.prezime, sp.pol  from lica l, sif_pol sp  where l.id_pol = sp.id_pol

Samo da pazi:
Citat:The CREATE VIEW statement was added in MySQL 5.0.1.

Mnogi jos vrte Mysql 4.1.

offline
  • Pridružio: 08 Jan 2007
  • Poruke: 279
  • Gde živiš: Srbija

Citat:sadux:
Radio sam i povezivao tabele u accesu ali mi ovde u sql nista ne ide..

Da li u Access -u još radiš?
Ako da, preporučujem da pređeš na neki DBMS u zavisnosti od posla koji radiš, a i ako tek učiš da odmah to radiš pravilno.

Ima i dobrih CASE alata gde to sve grafički možeš prikazati.

offline
  • Pridružio: 22 Feb 2005
  • Poruke: 282
  • Gde živiš: Šabac

Ok pomalo sam poceo da kontam..
Znaci ja sad ovu "novu" tabelu koja je napravljena "lica_upit1" i gde je izvrseno povezivanje da koristim samo za prikaz,jel tako?

Kad postavljam stranu za upis,ona mora da se upisuje u tabelu "lica"?
I sta mi je sad problem,ako je podeljeno u tabeli "sif_pol " id broj,koji je prakticno kljuc,problem je u tome sto ja necu da mi korisnik zna broj od tog zapisa,sto je pomalo glupo Smile Hocu da mi upise da li je musko,zensko ili nepoznato a ne brojeve..

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

to se reshava LOOKUP comboboxevima ili kakogod da implementiras... upisuje ID a prikazuje opis.

offline
  • Pridružio: 08 Jan 2007
  • Poruke: 279
  • Gde živiš: Srbija

sadux ::
Znaci ja sad ovu "novu" tabelu koja je napravljena "lica_upit1" i gde je izvrseno povezivanje da koristim samo za prikaz,jel tako?

I jeste i nije. To nije tabela, to je view, pogled, privremena tabela koja nastaje iz baznih. E sad, lično, ne koristim poglede, to sam samo radi primera dao, nego to što sam postavio za pogled pozivam iz same aplikcije koju razvijam.

Lookup polja ti rešavaju problem (šifra - opis), ima još načina ali ovo je najjednostavnije.

Ko je trenutno na forumu
 

Ukupno su 1051 korisnika na forumu :: 86 registrovanih, 8 sakrivenih i 957 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Rade, Andrija357, B61, babaroga, Banovo Brdo, Bluper, Bojan198527, bokisha253, Borej, BOXRR, Boxy, Cigi, cole77, Dimitrise93, Dioniss, Djota1, Dogma21, Doktor ORL, Egzekutor13, Electron, Fabius, famoso, Georgius, hyla, interesujeme, IQ116, ivan1973, IvicaiMarica, jaeger, JanaH, jarovitt, joca83, JOntra, Korle, krca73, Kubovac, kuntalo, LastTsar, Litostroton, ljuba, ljubsz, Makeitdrip, Manjane, mercedesamg, Miki01, mikidragi, Milan A. Nikolic, Milan Miscevic, milenko crazy north, miljannis, Milos1389, milutin134, Mineral, MiroslavD, mnn2, Ne doznajem se u oružje, nemkea71, nenad81, Nmr, opt1, Pale2025, Papadubi, Pavle29L, pedja.st, pein, Peruta, powSrb, Prašinar, royst33, ruma, sabac015555m, Sami_1ali, Sirius, SOVO515, srbijaiznadsvega, stalja, Stoilkovic, Str2022, Tandrkalo, vidra boy, Vlad000, Volkhov-M, Yellow Pinky, Zavulon, ZlatniRez, Žoržo