Autor | Zpráva | ||
---|---|---|---|
davef6 Profil |
#1 · Zasláno: 12. 1. 2008, 17:53:58
je možná řadit výpis z databáze podle 2 sloupců?.....mám třeba řazeno podle hodnocení a chtěl bych aby když bude stejné hodnocení, tak aby se to řadilo ještě podle počtu hodnocení.....např něco s hodnocením 5 a počtem hlasování 3 bude vypsáno dříve než něco z hodnocením 5 a počtem hlasování 2
|
||
Alphard Profil |
#2 · Zasláno: 12. 1. 2008, 18:29:01
je možná řadit výpis z databáze podle 2 sloupců?
ano order by hodnoceni desc, pocet desc |
||
franta štrůdl Profil * |
#3 · Zasláno: 14. 1. 2008, 11:28:52
já mám trochu jiný problém, ale taky se jedná o řazení podle dvou sloupců, jen jsou ty sloupce každý v jiné tabulce.
Mám výpis kategorií, kde se u každé kategorie na stejném řádku má objevit jméno toho, kdo vložil v dané kategorii poslední příspěvek. Toho by se dalo dosáhnout pomocí Order by datum desc, ale to by rovnalo i názvy kategorií podle data, ty ale chci mít rovnané podle id. Takže předpokládám , že budu muset použít dva dotazy. Tam je ale zase problém, že budu muset znát přesný počet kategorií (mění se) a ke každé kategorii správně přiřadit ten její poslední příspěvek. Což vůbec nemám šajn, jak udělat. |
||
ninja Profil |
#4 · Zasláno: 14. 1. 2008, 11:42:13
franta štrůdl: pokud mas v jednom dotazu vysledky s vice tabulek, muzes je samozrejme i seradit podle potreby. Napriklad (mam tabulku s clanky spojenou s tabulkou autoru a chci radit dle data jmena autora a data clanku):
SELECT clanky.nadpis, clanky.datum, autori.jmeno, autori.email FROM clanky JOIN autori ON clanky.autor_id = autori.id ORDER BY autori.jmeno, clanky.datum DESC; |
||
franta štrůdl Profil * |
#5 · Zasláno: 14. 1. 2008, 11:45:10
ano, data se tahají z více tabulek a dotaz je velmi podobný tomu tvému. Tohle je asi přesně to, co jsem potřeboval, díky :)
|
||
franta štrůdl Profil * |
#6 · Zasláno: 15. 1. 2008, 17:02:41
tak je to asi trošku jinak.. muj dotaz zněl původně takto
select s.idt, s.ids, s.nazev as s_nazev, a.ids, a.nazev as last_aud from sekce s inner join auditka a on s.ids=a.ids where s.idt='$idt' což vypsalo sekci pod sebou tolikrát, kolik měla pod sebou auditek (už nemluvím o příspěvcích jako předtím, ty jsou ještě pod auditkama a to je na mě zatím příliš složité). Což je nežádoucí, chci, aby se každé auditko vypsalo jen jednou a vedle něho poslední založené auditko v dané sekci... přidal jsem tedy na konec dotazu order by last_aud desc limit 1 . Což samozřejmě způsobí, že se vypíše jen jednou nejen auditko, ale i sekce.. tedy přesněji, vypíše se jediná sekce. Kéž by existovalo něco jako order s_nazev by s_nazev, order last_aud by last_aud limit 1 //tohle je samozřejmě blbost, ale snad to pro naznačení toho, čeho bych rád dosáhl, stačilo |
||
franta štrůdl Profil * |
#7 · Zasláno: 15. 1. 2008, 17:03:37
* oprava ... chci , aby se každá SEKCE vypsala jen jednou, a vedle ní poslední, pod ní založené auditko
|
||
ninja Profil |
#8 · Zasláno: 15. 1. 2008, 17:43:37
franta štrůdl: SQL prikaz GROUP BY je tvuj kamarad, koukni do dokumentace.
|
||
Franta štrůdl Profil * |
#9 · Zasláno: 15. 1. 2008, 19:21:22
tak jest, děkuji, ale teď se podmínka where s.idt='$idt' chová naprosto nelogicky :| takže cíle jsem stejně nedosáhl.
načrtnu tady zhruba, jak by měl výpis vypadat TÉMA1 ( s.idt = 1) -SEKCE1 poslední_auditko -SEKCE2 poslední_auditko -SEKCE3 poslední_auditko TÉMA2 ( s.idt = 2) -SEKCE4 poslední_auditko -SEKCE5 poslední_auditko -SEKCE6 poslední_auditko TÉMA3 ( s.idt = 3) -SEKCE7 poslední_auditko -SEKCE8 poslední_auditko -SEKCE9 poslední_auditko s podmínkou where s.idt='$idt' se vypíší sekce pouze v tématu 1, stejně tak pokud místo $idt zadám ručně '1', pokud zadám '2' nebo '3', nevypíše se nic. |
||
Kajman_ Profil * |
#10 · Zasláno: 15. 1. 2008, 21:23:39
Tady jsou příklady, jak se dají tahat řádky s maximem...
http://dev.mysql.com/doc/refman/5.0/en/example-maximum-column-group-ro w.html |
||
Franta štrůdl Profil * |
#11 · Zasláno: 15. 1. 2008, 21:53:07
díky, vyřešil jsem to pomocí dvou dotazů, což prý neni optimální, ale mam radost, že jsem to vůbec dal .) Ale podívám se na to
|
||
Časová prodleva: 16 let
|
0