Autor Zpráva
davef6
Profil
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
je možná řadit výpis z databáze podle 2 sloupců?
ano

order by hodnoceni desc, pocet desc
franta štrůdl
Profil *
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
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 *
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 *
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 *
* oprava ... chci , aby se každá SEKCE vypsala jen jednou, a vedle ní poslední, pod ní založené auditko
ninja
Profil
franta štrůdl: SQL prikaz GROUP BY je tvuj kamarad, koukni do dokumentace.
Franta štrůdl
Profil *
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 *
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 *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: