Autor Zpráva
blazej44800
Profil
Ahojte
Riešim jednu situaciu: mam 2 tabulky projects a projects_milestones . A potrebujem vypísať položky z tabuľky projects tak aby boli zoradené podľa počtu riadkov v tabuľke projects_milestones ktoré majú status=1 a zároveň rovnaké pid ako id riadku v tabulke projects

Viem je to zamotane ale potrebujem to vyriesit, skusal som joiny ale nepomohli.

Vdaka

Moderátor Davex: Databáze mají vlastní kategorii. Přesunuto z PHP.
Darker
Profil
Nejsem si jistý ale nejde udělat toto?
SELECT id, name FROM `tabulka1` WHERE 0=0 ORDER BY (SELECT status FROM `tabulka2` WHERE pid=tabulka1.id) DESC
juriad
Profil
select * from projects as p join (select pid, count(pid) as pocet from projects_milestones where status = 1 group by pid) as m on (p.id = m.pid) order by m.pocet
snad

Darker:
závislý poddotaz není úplně nejrychlejší a navíc nikde nepočítáš řádky
blazej44800
Profil
Darker:
nefunguje to, vyhadzuje to hlasku ze poddotaz vracia viac ako jeden riadok

juriad:
no uz je to blizsko ale vrati to stale iba jeden riadok, ja potrebujem vsetky riadky z projects


juriad:
a este to vrati pocet = 1 aj ked su v tabulke projects_milestones 2 riadky so status=1
juriad
Profil
ten vnitřní dotaz by měl vracet id projektu a počet jemu příslušejících řádků
funguje alespoň ten?

mám dojem, že jsme se nepochopili v zadání
příklad:
projects_milestones(pid, status)

1, 1
1, 2
2, 3
3, 1
1, 1
1, 1
3, 5

vnitřní dotaz vrátí:
(pid, pocet)
1, 3
3, 1
blazej44800
Profil
no nie celkom, ja potrebujem vypisat vsetky riadky z projects zoradene podla toho kolko riadkov projects.id = projects_milestones.pid a ma status =1
juriad
Profil
to snad můj select vrací
ukaž, prosím, vzorek dat a očekávaný výsledek
blazej44800
Profil
projects_milestones(pid, status)

1, 1
1, 2
2, 3
3, 1
1, 1
1, 1
3, 5

a mal by vratit zoradene podla pocet
(pid, pocet)
2, 0
3, 1
1, 3


Nie, ospravedlnujem sa, funguje to ale problem je ze ak projects_milestones neobsahuje ani jeden riadok s danym pid tak nic nevypise (resp. dotaz nikdy nevrati pocet=0)


Potrebujem vzdy vypisat vsetky polozky z projects aj ked v projects_milestones nie je ziadny riadok ktory splna podmienku
juriad
Profil
stačí nahradit join za left join
blazej44800
Profil
SUPER! Veľká vďaka :)
blazej44800
Profil
juriad:
môžem ťa alebo niekoho iného ešte poprosiť, potrebujem ešte jeden príkaz:
Tabuľka projects:
id       created                     deadline
1    2012-07-02 14:30:12       2012-07-05 13:45:19
2    2012-09-12 09:00:00       2012-09-14 18:00:00

A potrebujem vypísať všetky tieto položky zoradené podľa toho, ktorá položka je najviac dokončená (čiže musím vyrátať koľko percent z projektu vzhľadom na deadline - uzávierku je hotový). Stĺpce created a deadline sú typu DATETIME. Dúfam že tomu pochopíte.

Vďaka
Kajman
Profil
Vydělíte rozdíl času počátku a současného času rozdílem časů mezi počátkem a koncem.
blazej44800
Profil
Vdaka vsetkym za pomoc, zostavil som si takyto dotaz:
SELECT *  FROM  `projects`ORDER BY TIMESTAMPDIFF(MINUTE,now(),deadline)



resp. treba pouzit tento, aby to ratalo vzhladom na datum created
SELECT * FROM  `projects`ORDER BY (now()/TIMESTAMPDIFF(MINUTE,deadline,created)) 

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: