ugrás a tartalomhoz

Order by vagy új tábla szerkezet?

randomly · 2006. Feb. 17. (P), 21.44
Sziasztok!

Van egy adatbázisom amiben lehet van egy logikai hiba, a problémám a
következő.
A táblának a van két oszlopa az egyik Nettó_ár a másik
Nettó_akciós_ár.
A logika az lett volna, ahol az akciós ár nem nulla az akciós.
Igen ám de ha lekérdezek egy bizonyos termék kivitelt, nem tudok az
éppen aktuális árra rendezni.
Mert ha Nettó_akciós_ár -ra rendezek akkor a nullásak vannak elöl.
Nem pedig a olcsó akciósok.
Ha Nettó_ár -ra rendezek akkor meg ugye a Nettó_akció_ár keveredik
el.

Első blikkre van valakinek ötlete, azon kívül hogy gondoljam újra a
táblámat?

Persze ez is megoldható, de TI hogyan csináljátok?

rand
 
1

Ket fele modszer

Grandmaster · 2006. Feb. 17. (P), 21.56
1. Ha elore szeretned az akcios arakat, es utana a sima arakat, mindezt rendezve:
ORDER BY netto_akcios_ar, netto_ar
2. Ha pedig az osszes ar rendezve legyen szepen sorban, akkor meg egy ar mezo kene, es egy kulon mezo annak jelolesere, hogy valamelyik ar akcios-e.
2

az aktuálisakat szeretném rendezni.

randomly · 2006. Feb. 17. (P), 22.10
Szia!

Köszi a gyors válasz.
De az aktuális szerint szeretném rendezni.
Mindegy akciós vagy nem csak az ár számítson.

Köszönöm rand

ps: persze a 0 -ás nem akciós miatt lehet két lekérdezés vagy nem is tudom ...
3

<Nincs cím>

Anonymous · 2006. Feb. 17. (P), 22.27
Szia!

Nem teljesen tiszta, de ha jól értem, akkor azoknál a rekordoknák, ahol nincs akciós ár, ott 0-ra van állítva az "akciós ár" mező. Állítsd NULL-ra, és úgy az akciós rendezésnél a legolcsóbb akciós fog előre kerülni.
-- hector
4

SQL feltétel

Poetro · 2006. Feb. 18. (Szo), 02.21
"Kicsit" ugyan lassíthatja a lekérdezést de:

SELECT IF(netto_akcios_ar>0, netto_akcios_ar, netto_ar) AS aktualis_ar
ORDER BY aktualis_ar
--------
Poetro
5

Azt hiszem ez lesz az!

randomly · 2006. Feb. 18. (Szo), 10.59
Helló!

Ha jól érzem ez jó lesz, most nem tudom folytatni a scriptem de elsőre jónak tünik!

Köszönöm rand
SELECT *, IF(Nettó_akciós_ár>0, Nettó_akciós_ár, Nettó_ár) 
AS aktualis_ar 
FROM `Táblanév` 
ORDER BY aktualis_ar
6

másképp:

Anonymous · 2006. Feb. 18. (Szo), 12.52
ha nem 0-ra vennéd az akciós árat, hanem ugyanannyira, mint a normál ár(ezzel jelezve, hogy nincs akció), akkor sima lekérdezzéssel is menne...
7

Adatbázisnál tökéletes.

randomly · 2006. Feb. 18. (Szo), 13.21
Szia!

Hogy nekem ez miért nem jut eszembe!
Igaz nekem nem lenne jó.
Mert én OpenOffice.org Calcban szerkesztem a táblát. (Excel)
És ott az automata szűrés nem menne, most leszűrőm a '> 0'.
És látom mi akciós és mi nem.

De sejtem az SQL könyvek nem így tanítják a tábla felépítését?!

rand
8

Plusz adat feleslegesen

Dualon · 2006. Feb. 18. (Szo), 15.06
Szerintem nem érdemes plusz adatot tárolni. A fentebb említett NULL tökéletes, vagy ha az nem, - a szintén említett - lekérdezéskor 0-nál nagyobb akciós árakat kell nézni.

Poetro, egyébként miért kell bele az IF, miért nem jó sima WHERE akcios_ar NOT NULL? (Pl., de lehetne join is.) Nem kötekedés, tényleg kíváncsi vagyok.

D.
http://e-arc.hu/
9

Hogyan müködik ez a feltétel nem tudom ...

randomly · 2006. Feb. 18. (Szo), 16.30
Sziasztok!

Ez az IF hogyan működik így leírva nem sok fogalmam van.
De ugye nekem kell az akciós és a nem akciós is.
És ezeket kell aktuális árak szerint rendezni.

pl. ha valaki csak almát akar venni és mindegy milyen Típust és érdekli a nem akciós is.

Nettó_árNettó_akciós_árTermékTípus aktualis_ar
1000almapiros100
120101almasárga101
110102almaédes102
1030almazöld103

A NOT NULL szintén megneheziti a dolgom a Calcban.

A MySQL hogyan tudnám rá venni hogy vessző legyen a tizedes jel?
Mert ugye én csak pontal tudom megetetni a MySQL-el, de az a Calcban dátum. :-(

rand
10

akció mértéke

tiku I tikaszvince · 2006. Feb. 18. (Szo), 18.12
Szerintem ne az akciós árat tárold, hanem az engedmény mértékét százalékban.
pl. adott terméknek a nettó ára 100, az engedmény mértéke 20% (0.2), akkor ki tudod írni, az eredeti árat(100), az engedmény mértékét(-20%), és az akciós árat (netto_ar*(1-engedmeny)).
Továbbá tudsz rendezni az eredeti ár, az engedmény mértéke, vagy akár a számított ár szerint is.

TikuVoltam
Ma is holnap fekszünk le, mint tegnap
11

aktualis ár és eredeti ár

Jano · 2006. Feb. 18. (Szo), 20.28
Egyszerűbb lenne ha a 2 oszlopban nem 0-znál semmit, hanem az értelmezésük a következő lenne: van a terméknek egy alap, eredeti ára illetve egy aktuális ára ami lehet kevesebb mint az eredeti ár, mely esetben akciósnak tekinthető.

Igy az aktualis ar alapjan siman lekerdezhetok a termekek.
Ha akcios kell akkor azokat rakod ki amiknek az aktuális ára kevesebb.
A különbség alapján ki tudod írni az akció mértékét.
Ha vége van az akciónak akkor egyszerűen az eredeti árát beleírod az aktuálisba is.

Az árak tárolásánál érdemes azért azt is megjegyezni, hogy később visszakereshetőnek kéne lenni, hogy egy adott pillanatban mennyiért is vette meg a vevő, de legalább azt, hogy te mennyiért arultad!