Mysql lekérdezés

Sziasztok!

Egy olyan gondom van, hogy adott egy webáruház. Lehetőség van arra, hogy a kiválasztott kategóriákat bizonyos feltétel szerint rendezzzük. Az egyik ilyen feltétel, hogy "Az akciós termékek elől".
Ezt szeretném megoldani valahogyan, hogy az akciós termékek elől legyenek értékük szerint növekvőben majd utána a maradék termék pl. ABC sorrendben.
Ezt meg lehet oldani egy lekérdezésben?

Hozzászólások

Ha 0-1 bitet hasznalsz az akcios termek jelzesere, akkor koltsegesen, de igen.


SELECT termek_id,termek_nev,mezo1,mezo2,...,(akcios*termek_ar) AS x FROM tabla ORDER BY x ASC, termek_nev ASC 

Vagy tarolt eljaras, es hasonlo okossagok.

Igy az a baj, hogy a nem akcios termekek kerulnek elore?
Ha igen, a legegyszerubb szerintem az, hogy 2 kulon lekerest intezz, egyet az akcios termekekre es egyet a nem akciosokra.
Igaz nem optimalis mert 2 lekeres lesz, de azok viszonylag egyszeruek es az nem elhanyagolhato.
_______________________________________________________
UBUNTU 8.04 Rock's!
Type cat /vmlinuz > /dev/audio to hear the Voice of God.

Jol jonne, ha a termekeket tarolo tabla strukturajat ismernenk es ha az akcios termekek valamien referencia tablaval vannak folepitve akor annak a strukturajat is.
_______________________________________________________
UBUNTU 8.04 Rock's!
Type cat /vmlinuz > /dev/audio to hear the Voice of God.

Egyszerűen mezőkben vannak tárolva. Még az akciós ár is. Nem kell hozzá külön számolni.

Nem kell ehhez egy új mező, ha nem akarja a jelenlegi struktúrát megváltoztatni. Azt írta, hogy egy termék akkor akciós, ha ki van töltve az akcios_ar mező. Ha erre a mezőre nyom egy order by -t, akkor is jó lesz, mert az üres=0 és így azok előre kerülnek.

--
http://laszlo.co.hu/

Hömmm... ha egy mező üres, az normális esetben NULL (ami nem egyenlő a 0 számmal vagy az üres stringgel...). 0 akkor lesz, ha MySQL-ül mondva IFNULL(mező, 0) -t vagy COALESCE(mező, 0)-t használsz. Szerintem... (Ettől még az order by helyes eredményt adhat, egykupacpa gyűjtve az üres mezőket tartalmazó sorokat). Egyébként meg kínos dolog sülhet ki abból, ha a NULL-ból 0 lenne: a 0Ft, mint akciós ár feltüntetésre kerülne... opsza :-P Megoldás lehetne egy plusz mező, ami megmondja, hogy a két ár mezőből melyik az érvényes.

Ket szintrol beszelunk.
ORDER BY akcios_ar DESC eseten a NULL erteku elemek a vege fele, a nem null erteku elemek az eleje fele lesznek. Pont.

Az mar megint mas kerdes, hogy a megjelenitesnel mar oda kell figyelni, es a 0 Ft akcios aru termeket nem akciosnak jelolni, de ez mar boven nem az SQL lekerdezes szintje.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Úgy néz ki, hogy működik. Úgy oldottam meg végül, hogy van egy akcios mező ami 0 vagy 1 lehet. Lekérdezem először csak az akciós termékeket, rendezem, majd a nem akciós termékeket és a kettő tömböt egyesítem. Így elöl vannak az akciós termékek az növekvő sorrendben, majd utána a nem akciós termékek abc sorrendben.
Köszi mindenkinek.

Egész végig ezzel próbáltam és nem működött úgy ahogy nekem kellett volna. Mert ha elöl voltak az akciós termékek akkor fordított sorrendben voltak, ha viszont sorrendben voltak akkor pedig leghátul helyezkedtek el. Akárhogy próbáltam mindig rossz volt az eredmény. Én sem akartam kettő query-t betenni, de így legalább működik.

Nem fogom ismetelni magam ujra, meg akor sem ha a kedves kerdezo nem kepes a valaszokat vegigolvasni es vegiggondolni.

http://hup.hu/node/59944#comment-625472

Amugy minek keljen meg egy mezo 0-1-es kapcsolonak? Egyszeruen meg lehet kulomboztetni az akcios termeket a nem akciosaktol... akcios_ar=NULL, ha a nem akcios termekek listaja kell es akcios_ar!=NULL ha az akcios termekek listaja kell!
Szerintem aki csak e miatt egy uj oszlopot tesz be az probalja megtanulni, hogy elob gondolkodunk es utanna cselekszunk!
_______________________________________________________
UBUNTU 8.04 Rock's!
Type cat /vmlinuz > /dev/audio to hear the Voice of God.

Igen, ebben igazad van, de MySQL-ben mukodik. => arra akartal celeozni, hogy a MySQL nem normalis kornyezet? Mitszolsz ahoz, hogy a NULL = #000000, tehat x=NULL es y=NULL tehat x=#000000=y :)

Belekotni mindenbe belelehet :)
_______________________________________________________
UBUNTU 8.04 Rock's!
Type cat /vmlinuz > /dev/audio to hear the Voice of God.

A variables egy letezo tabla, 2 sor van benne (az egyszeruseg kedveert nem hoztam lere uj DB-t, tablat, stb..)


mysql> select name from variables WHERE NULL!=0;
Empty set (0.00 sec)

mysql> select name from variables WHERE NULL=0;
Empty set (0.00 sec)

mysql> select name from variables WHERE 0 is NULL;
Empty set (0.00 sec)

mysql> select name from variables WHERE NULL is NULL;
+---------+
| name    |
+---------+
| command |
| status  |
+---------+
2 rows in set (0.00 sec)

mysql> select name from variables WHERE NULL is not NULL;
Empty set (0.00 sec)

nyos@nyos:~$ mysql --version
mysql  Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2

A NULL es a 0 ertek nagyon nem ugyanaz.

----
'Give us seeds so that we may live and not die' (Gen 47:19)
Wow! Quoting the bible worked! -Eremal, piratebay
honlapkészítés