Prikazi cijelu temu 12.05.2016 18:43
dex Van mreze
Super Moderator
Registrovan od:23.02.2012
Lokacija:Knjazevac


Predmet:Re: MySQL upiti nad jednom tablom
Citat:

sada mi lista samo jabuka pod voce, ali prikaze sve redove koje zelim, al neznam zasto ne napise ime druge i trece vocke ?

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:

U glavu mi sine pomisao o TRIM i NULL. Smijem li ovo upotrijebiti u SQL jeziku?

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):
  1. SELECT t1.datum, t1.kg, t1.voce
  2. FROM ProdajaVoca AS t1 LEFT JOIN ProdajaVoca AS t2 ON t1.kg = t2.kg AND t1.datum = t2.datum
  3. WHERE t2.voce='jabuka' OR t1.voce='jabuka'
  4. ORDER BY t1.datum;

Ako imaš nule

PreuzmiIzvorni kôd (SQL):
  1. SELECT t1.datum, t1.kg, t1.voce
  2. FROM ProdajaVoca AS t1 INNER JOIN ProdajaVoca AS t2 ON t1.kg = t2.kg AND t1.datum = t2.datum
  3. WHERE t2.voce='jabuka' AND (t2.kg <> 0 OR t1.voce='jabuka')
  4. ORDER BY t1.datum;