Forum » Izdelava spletišč » 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.
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.
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.
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
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.
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
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
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.
Moral se boš odločiti, ali boš sortiral po datumu ali po motivu. Oboje hkrati namreč ne gre.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [SQL] Pohitritev izpisaOddelek: Programiranje | 2907 (1806) | kuall |
» | SQL vprašanjeOddelek: Programiranje | 1110 (709) | MrStein |
» | PHP pridobivanje podatkov iz dveh tabel po tujem ključuOddelek: Izdelava spletišč | 1159 (927) | SkIDiver |
» | [php, mysql] sortiranje izpisa iz bazeOddelek: Izdelava spletišč | 2658 (2177) | Binji |
» | Malce zahtevnejši SQL stavek včasih narobe SELECT-aOddelek: Izdelava spletišč | 2142 (1811) | Brilko |