Prikazi cijelu temu 12.05.2016 10:08
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Lokacija:zagreb


Predmet:Re: MySQL upiti nad jednom tablom
hvala dexxxl!

Citiraj dexxxl:
Pisao napamet, iz glave, nisam testirao.
Ovo provereno radi

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):
  1. SELECT t1.datum, t1.kg, t1.voce
  2. FROM prodaja AS t1
  3.         LEFT JOIN prodaja AS t2 ON t1.datum = t2.datum
  4.         AND t1.kg = t2.kg
  5. WHERE TRIM(t2.voce) = 'jabuka' // maknuti prazna mjesta
  6. AND t2.kg <> 0 //umjesto <>NULL

ovo je proradilo, a sada da isprobam i stari kod

PreuzmiIzvorni kôd (SQL):
  1. SELECT t1.datum, t1.kg, t1.voce
  2. FROM prodaja AS t1
  3.         INNER JOIN prodaja AS t2 ON t1.datum = t2.datum
  4.         AND t1.kg = t2.kg
  5. WHERE TRIM(t2.voce) = 'jabuka' // maknuti prazna mjesta
  6. AND t2.kg <> 0 //umjesto <>NULL;

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):
  1. SELECT t1.datum,t1.kg,t1.voce
  2. FROM prodaja AS t1, prodaja AS t2
  3. WHERE t1.datum=t2.datum
  4. AND t1.kg=t2.kg
  5. AND TRIM(t2.voce)='jabuka'
  6. AND t2.kg<>0

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
zivot je moja domovina.
Ovaj post je ureden 3 puta. Posljednja izmjena 12.05.2016 13:01 od strane Avko.