imam tablicu ‘hrvatska’ iz koje izvlacim podatke na sljedeci nacin:
TABLICA ‘korisnici’:
IME STATUS ZEMLJA
Ivan ozenjen hrvatska
Marko neozenjen hrvatska
Ante neozenjen hrvatska
Petar ozenjen hrvatska
SELECT * FROM tablica where zemlja=‘hrvatska’;
Rezultati:
IME STATUS
Ivan ozenjen
Marko neozenjen
Ante neozenjen
Petar ozenjen
TABLICA ‘cijene’:
STATUS CIJENA
ozenjen 100
Na koji nacin mogu izlistanim podacima prve tablice pridruziti jos
jedan podatak iz druge tablice ali s tim da se samo kod pojedinaca sa
statusom ozenjen ova cijena i nalazi tako da mi izlist pokazuje sljedece:
Ime Status Cijena
Ivan ozenjen
Marko neozenjen 100
Ante neozenjen 100
Petar ozenjen
Mislio sam sa LEFT JOIN-om ali mislim da nije to to.
SELECT * FROM tablica where zemlja=‘hrvatska’ LEFT JOIN cijene ON (cijene.status = korisnici.status);
Mali ispravak bila je mala greska na kraju, samo sam izmjenio mjesto gdje se cijena nalazi, ( 100 ozenjen )
[quote=“tchibo”]imam tablicu ‘hrvatska’ iz koje izvlacim podatke na sljedeci nacin:
TABLICA ‘korisnici’:
IME STATUS ZEMLJA
Ivan ozenjen hrvatska
Marko neozenjen hrvatska
Ante neozenjen hrvatska
Petar ozenjen hrvatska
SELECT * FROM tablica where zemlja=‘hrvatska’;
Rezultati:
IME STATUS
Ivan ozenjen
Marko neozenjen
Ante neozenjen
Petar ozenjen
TABLICA ‘cijene’:
STATUS CIJENA
ozenjen 100
Na koji nacin mogu izlistanim podacima prve tablice pridruziti jos
jedan podatak iz druge tablice ali s tim da se samo kod pojedinaca sa
statusom ozenjen ova cijena i nalazi tako da mi izlist pokazuje sljedece:
Ime Status Cijena
Ivan ozenjen 100
Marko neozenjen
Ante neozenjen
Petar ozenjen 100
Mislio sam sa LEFT JOIN-om ali mislim da nije to to.
SELECT * FROM tablica where zemlja=‘hrvatska’ LEFT JOIN cijene ON (cijene.status = korisnici.status);[/quote]
U drugoj tablici se nalazi samo jedan redak i taj zelim pridodati svakom retku iz prve tablice u kojemu je redak status jedan retku status u drugoj tablici.
Ovako kako smo mi sastavili
Znaci: “Puni izlist prve tablice uz dodatak cijene iz druge ukoliko se podadaraju retci ‘status’.”
Pronasao sam gdje je problem ali ga ne mogu dokuciti.
znaci imam sljedeci query koji je OK.
SELECT korisnici.ime, korisnici.status, cijene.cijena FROM korisnici, LEFT JOIN cijene ON (cijene.status = aakorisnici.status) WHERE zemlja=‘hrvatska’;
Ali posto je ovo samo dio koda i tu imam vise tablica koje uzimam u obzir te u ovaj query dodam jos neku tablicu koja nema niti status niti cijenu nego jednostavno potrebna u query-u dolazi do zbrke.
SELECT korisnici.ime, korisnici.status, cijene.cijena, knjige.zanr FROM korisnici, knjige LEFT JOIN cijene ON (cijene.status = korisnici.status) WHERE zemlja=‘hrvatska’;
Pronasao sam gdje je problem ali ga ne mogu dokuciti.
znaci imam sljedeci query koji je OK.
SELECT korisnici.ime, korisnici.status, cijene.cijena FROM korisnici LEFT JOIN cijene ON (cijene.status = korisnici.status) WHERE zemlja=‘hrvatska’;
Ali posto je ovo samo dio koda i tu imam vise tablica koje uzimam u obzir te u ovaj query dodam jos neku tablicu koja nema niti status niti cijenu nego je jednostavno potrebna u query-u dolazi do zbrke.
SELECT korisnici.ime, korisnici.status, cijene.cijena, knjige.zanr FROM korisnici, knjige LEFT JOIN cijene ON (cijene.status = korisnici.status) WHERE zemlja=‘hrvatska’;
ne dajem nista na kapaljku, nego pokusavam prilagoditi upite tako da shvatim ono sto mi se govori, nisam programer a ponekad su odgovori prekomplicirani da bi ih shvatio a kamoli implementirao.
Znaci:
Tablica Korisnici:
KOD IME STATUS ZEMLJA
Tablica Cijene:
STATUS CIJENA
Tablica Knjige:
KOD NASLOV ZANR AUTOR
Tablica korisinici i cijene su vezane statusom
Tablice Korisinici i knjige kodom.
SELECT korisnici.ime, korisnici.status, cijene.cijena, knjige.zanr
FROM korisnici, knjige, cijene
WHERE korisnici.kod = knjige.kod
AND korisnici.status = cijene.status
AND korisnici.zemlja=‘hrvatska’
SELECT korisnici.ime, korisnici.status, cijene.cijena, knjige.zanr
FROM korisnici LEFT JOIN knjige ON korisnici.kod = knjige.kod
LEFT JOIN cijene ON korisnici.status = cijene.status
WHERE korisnici.zemlja=‘hrvatska’
Pokusavam u LEFT join ubaciti vanjsku varijablu koja nema veze sa tablicama. Da li je uopce preporucivo?
LEFT JOIN knjige ON korisnici.kod = knjige.kod LEFT JOIN cijene ON korisnici.status = cijene.status AND $varijabla1=$varijabla2 WHERE korisnici.zemlja=‘hrvatska’
Racuna mi ok samo sto kada radim ORDER BY imam problema kod sortiranja. Cini mi se ukoliko je LEFT JOIN u pojedinim retcima FALSE da ce raditi zbrku prilikom ORDERA.
Stavljati uvjet na nešto što nema veze s podacima je vrlo upitne svrhe.
Mora se znati što je LEFT JOIN.
LEFT JOIN je kao ispružena ruka koja će prihvatiti nešto ukoliko postoji.
Ukoliko se radi ORDER na polje od tablice koja je joinana, postoji mogućnost da će sadržaj toga polja biti NULL i order po takvom polju se mora dobro složiti.
Preporučam da se kod selecta takvog polja koristi ISNULL(POLJE, ‘’) ili ISNULL(POLJE, 0) ovisno o tipu POLJE.
Bi li mi mogao dati primjer toga o cemu govoris na osnovu naseg upita od ranije
SELECT korisnici.ime, korisnici.status, cijene.cijena, knjige.zanr
FROM korisnici LEFT JOIN knjige ON korisnici.kod = knjige.kod
LEFT JOIN cijene ON korisnici.status = cijene.status
WHERE korisnici.zemlja=‘hrvatska’ ORDER BY cijena
Jos jedna stvar, probao sam napraviti ORDER BY na osnovu kalkulacije row*row+row to radi ali opet dolazi do problema sa LEFT JOINOM. Da li je takav order uopce moguc.