Avko | 10.05.2016 16:07 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Predmet:MySQL upiti nad jednom tablom zna li mozda netko kako ovo rijesiti. imamo tablu prodaja voca
sa SELECT upitom trebao bi izdvojiti za jabuke i koje su jos vocke imale istu prodaju za taj datum kao i jabuke, ako je prodaja 0, onda ne gledamo za druge vocke. upit bi trebao dati ovu tablicu,
|
dex | 10.05.2016 17:42 |
---|---|
Predmet:Re: MySQL upiti nad jednom tablom PreuzmiIzvorni kôd (SQL):
|
Gjoreski | 11.05.2016 00:42 |
---|---|
Predmet:Re: MySQL upiti nad jednom tablom eve probaj ova PreuzmiIzvorni kôd (SQL):
|
Gjoreski | 11.05.2016 00:45 |
---|---|
Predmet:Re: MySQL upiti nad jednom tablom ili ova PreuzmiIzvorni kôd (SQL):
|
Avko | 12.05.2016 10:08 |
---|---|
Predmet:Re: MySQL upiti nad jednom tablom hvala dexxxl! Citiraj dexxxl: Pisao napamet, iz glave, nisam testirao. kada si ovo napisao znao sam da to sigurno i radi. Slijepo sam vjerovao u taj kod bez imalo trunke sumnje i ako nece raditi siguran sam bio da moram preispitati svoje podatke. Kod nije proradio od prve upravo iz razloga gore navedenih. Nakon sto sam ispravio pokusao sam i sa prvim kodom u kojem se umjesto LEFT nalazi INNER i naravno proradio je. Rade oba bez greske. Gdje se potkrala greÅ¡ka? Prvo da opiÅ¡em moj susret sa tvojim kodom i sve će isplivati na povrÅ¡inu. Pa da krenem... DoÅ¡ao sam kući u sitne noćne sate, kao i obićno pripit Å¡to od pića Å¡to od života. Sjednem u kuhinju za stol pa osijetih odma neku glad te otvorim frizider i gurnem glavu unutra i vidim pivu. Rosna, hladna ćeka me. Zove me da ju uzmem. Cekalo me strpljivo u frizideru. Nije joj krivo sto sam konzumiro druge pive. Otvorim ju i znao sam da sam prvi. Podijelio bi je sa nekim i nebi mi bilo krivo. Krene mi niz grlo i osjetih da ima i unutrasnju ljepotu. Pogledam u flaÅ¡u i vidim pjeni se a nije bjesnilo. Odlicno je! Sjednem za stol , a glad je nestala. Shvatio sam da sam bio zedan, a ne gladan. Dok sam razmisljao sjetio sam se da pogledam na forum i vidim sta je sa prodajom voca. Na forumu gjoreski, sam samuje. Bilo mi zao sto on tamo a ja ovdje sjedimo i samujemo. Steta sto nismo blize. Odmah sam otisao na ovu temu te odvrtio kotacic misa na zadnji post. Uzmem tvoj kod metodom copy - paste te ga Å¡utnem u mySQL workbench i pokrenem, kad tamo nista. Stoje kolone prazne da praznije nemogu biti, a i flaÅ¡a se ispraznila te posegnem za drugom u frizider. Otvorim ju nakrenem i zatvoim oci te se bacim u razmisljanje. U glavu mi sine pomisao o TRIM i NULL. Smijem li ovo upotrijebiti u SQL jeziku? Probat cu , nista me ne kosta. Odem do laptopa, podrignem se pa krenem sa prepravkama. PreuzmiIzvorni kôd (SQL):
ovo je proradilo, a sada da isprobam i stari kod PreuzmiIzvorni kôd (SQL):
i ovo radi, znaci bilo je do NULL i TRIM. Eto radi to savrseno. Poceo sam sa SQL jezikom i svi kazu da je jednostavan no ja sam dosao do zakljucka da je jednostavan ali zahtijeva od korisnika logiku i prirodnu inteligenciju. Mozda i ja kada vise budem koristio naucim logicki razmisljati u SQL-u. Pokusavam naci vezu izmedu VB-a i SQL sto mozda grijesim. Mislio sam da mi SELECT upiti nad jednom tablicom ce biti dovoljni no iz tvojeg koda vidim da moram ipak otvoriti u knjigama i poglavlje: "rad sa dvije tablice" jer u tvom primjeru imamo rad sa dvije tablice koje su napravljene iz jedne. Proucio sam naredbe INNER i LEFT, a naredba JOIN se koristi kada zelimo spojiti podatke iz dvije tablice. INNER nam vraca samo one redove koji imaju odgovarajuce vrijednosti u obje tablice, dok nam LEFT vraca sve slogove iz prve tablice u listi i odgovarajuce slogove iz tablice sa desne strane ali samo one koji imaju odgovarajuce vrijednosti u toj koloni. (OSNOVE UPRAVLJANJA RELACIONIM BAZAMA PODATAKA, R.S.Mikanovic) sada sam probao i ja napisati nesto pa to izgleda ovako: PreuzmiIzvorni kôd (SQL):
isto radi no tvoj je kod ljepsi i iz njegovog koncepta mozes vidjeti kako rijesava problem dok je kod mene nabacano AND naredbi i vjerojatno bi se u nekom vecem kodu covjek izgubio pa bi se upitao: gdje i kako?. sada naravno imam jos jednu molbu jer ovo nije bas onako kako sam zamislio. pod datumom 3.1.2016 jabuke su 0 i htio bi da ispise samo njih bez krusaka koje su isto 0 |
dex | 11.05.2016 17:48 |
---|---|
Predmet:Re: MySQL upiti nad jednom tablom Pisao napamet, iz glave, nisam testirao. Ovo provereno radi select t1.datum, t1.kg, t1.voce from ProdajaVoca As t1 left join ProdajaVoca As t2 on t1.datum = t2.datum AND t1.kg = t2.kg where t2.voce = 'jabuka' OR (t1.voce='jabuka' AND t1.kg is null); |
Gjoreski | 12.05.2016 12:36 |
---|---|
Predmet:Re: MySQL upiti nad jednom tablom Ovako PreuzmiIzvorni kôd (SQL):
|
Avko | 12.05.2016 13:13 |
---|---|
Predmet:Re: MySQL upiti nad jednom tablom Citiraj Gjoreski: Ovako sada dobijem samo kruska i jabuka za 3.1.2016 ali dobro, hvala gjoreski. u meduvremeno kombiniro sve moguce i dosao do ovoga: PreuzmiIzvorni kôd (SQL):
sada mi lista samo jabuka pod voce, ali prikaze sve redove koje zelim, al neznam zasto ne napise ime druge i trece vocke ? |
dex | 12.05.2016 18:43 |
---|---|
Predmet:Re: MySQL upiti nad jednom tablom Citat:
Pa sam si napisao SELECT t1.datum, t1.kg, t1.voce … ... WHERE TRIM(t1.voce) = 'jabuka' Iz leve tabele (t1) biraÅ¡ polja, iz desne (t2) postavljaÅ¡ ograničenja Citat:
Kao prvo ne razumem čemu TRIM ? Podatke o voću trebao bi da vučeÅ¡ iz kodne tabele gde čuvaÅ¡ podatke o Å¡ifri, nazivu, bar kodu, ceni… i ostalom Å¡to ti treba. U tabelu Prodaja prebacujeÅ¡ samo ključ polje iz tabele voće. Na taj način se sprečavaju greÅ¡ke, npr jednom ukucaÅ¡ mandarina, a drugi put mandrina. Da li je kod tebe nula (0) ili NULL? Nula i NULL nisu isto. Null je prazan podatak (prazno polje). Null podatak se smatra da vrednost nije poznata, pa je besmisleno uporedjivati je sa bilo čime, PA ČAK I SA SAMOM SOBOM. Ako uradis JOIN nad dve tabele po nekom polju koje sadrži i null vrednosti baza NE RADI join za te vrednosti. I kod mene u SQL-u je bila greska umesto <> null, trebalo je IS NOT NULL. NULL vrednosti treba izbegavati kad god je to moguce. U tvom primeru postavis default vrednost na 0. Mada ne razumem ako nije bilo prodaje nekog voca tog dana otkud u tabeli? Elem da ne dužim viÅ¡e, nego da dam reÅ¡enje Ako imaÅ¡ null vrednosti (prazna polja) PreuzmiIzvorni kôd (SQL):
Ako imaÅ¡ nule PreuzmiIzvorni kôd (SQL):
|