» »

MySQL query noce delati tako kot bi rad

MySQL query noce delati tako kot bi rad

Baja ::

imam en katalog artikov in bi jih rad prikazal takole:

prvo tiste ki so oznaceni kot novi (novo_key). morajo biti tudi grupirani po motivu (motiv_id - vec artiklov ima enak motiv)

zatem pa tiste ki niso oznaceni kot novi, prav tako grupirani po motivu.

do sem vse lepo in prav. Potem pa bi rad obe skupini grupiral tudi po casu (kako dolgo bo artikel oznacen kot novi). torej visje vrednosti naprej.

zaenkrat sem prisel s queryjem nekako do tu:

select * from .... order by 'novo_key' DESC, 'motiv_id, ''novo_cas' DESC

prvi del queryja je ok. problem je pri motiv_id in novo_cas. query bi moral biti napisani tako, da bi jih prvo sortiral po novo_cas, da dobim artikle, ki morajo biti na vrhu, potem pa bi jih moral urediti se po motivih. torej ce je na 1. mestu artikel z motivom motiv1, moram se vse ostale artikle z motivom1 spraviti za tega. sele nato se izpisujejo naslednji artikli. upam da ste me razumeli, kaj hočem.

frke ::

Grupiranje in sortiranje ni isto, zato iz tega opisa ne razumem, kaj sploh želiš.

Prosim, če najprej napišeš nekaj vstric s polji, kot so v tabeli in potem kako bi rad, da izgledajo po sortiranju.

Baja ::

ok, imam tabelo s podatki

id, ime, motiv_id, novo_key, novo_cas

1, abc, 1, 1, 11
2, abc, 2, 1, 9
3, abc, 3, 1, 12
4, abc, 1, 1, 8
5, abc, 2, 1, 7
6, abc, 3, 1, 7
7, abc, 3, 0, 5
8, abc, 3, 0, 6
9, abc, 3, 0, 7

query mi mora vrniti rezultate po id: 3, 6, 1, 4, 2, 5, 9, 8, 7

torej prvo tiste z novo_key = 1. prvo id 3 ker ima najvisji novo_cas. in zatem vsi ki imajo isti motiv_id padajoce. torej id 6. ker ni vec artiklov z motiv_id = 3, mora izpisati 1. in nato 4. id, ker mati isti motiv_id. zatem 2. in 5. id
zdaj pa se po istem postopku tiste artikle ki imajo novo_key = 0

upam da je bolj jasno.

Skrat ::

Pomoje bi moglo it tkole:

select * from .... GROUP BY novo_key, motiv_id DESC ORDER BY novo_cas DESC
Free software is a matter of liberty, not price.

Baja ::

zal ne. najblizje sem prisel z queryjem

ORDER BY 'novo_key' DESC, 'motiv_id' DESC, 'novo_cas' DESC

kar pa ni najbolj v redu, saj jih razvršča po motivih in ne po casu. 'novo_cas' je tu skoraj brez pomena. Bo moglo kar tako biti. Problem je v tem, da na zacetku ni nihce govoril o sortiranju.

Baja ::

mislim da mije uspelo

ORDER BY 'novo_key' DESC, 'id' 'motiv_id' DESC

ne vem zakaj se ni sem prej spomnil. visji id ima, kasneje je bila dodana, ne 8-)

ADF ::

Kakorkoli obrneš, tistega zaporedja, ki si ga navedel (3, 6, 1, 4, 2, 5, 9, 8, 7) s tem nisi dobil.
Moral se boš odločiti, ali boš sortiral po datumu ali po motivu. Oboje hkrati namreč ne gre.

Baja ::

ja, mas prav. ampak je z zgornjim queryjem zadosti blizu. tako da bo kar tako ostalo.

Ziga Dolhar ::

Sem imel ppodobno težavo in sem jo rešil z dvema kverijema: s prvim sem pofetchal vse vnose, nato pa v PHPju zgeneriral array z ID-ji, ki jih dejansko želim. Nato poženem še drugi kverij s pogojem WHERE neki_id IN ('.implode(', ', $neki_idji).')';. Bi pa menda lahko to rešil s subselectom nekako ;).
https://dolhar.si/


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[SQL] Pohitritev izpisa

Oddelek: Programiranje
252908 (1807) kuall
»

SQL vprašanje

Oddelek: Programiranje
81113 (712) MrStein
»

PHP pridobivanje podatkov iz dveh tabel po tujem ključu

Oddelek: Izdelava spletišč
141162 (930) SkIDiver
»

[php, mysql] sortiranje izpisa iz baze

Oddelek: Izdelava spletišč
262662 (2181) Binji
»

Malce zahtevnejši SQL stavek včasih narobe SELECT-a

Oddelek: Izdelava spletišč
302142 (1811) Brilko

Več podobnih tem