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 |
#2 · Zasláno: 8. 5. 2012, 17:16:25
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 Darker: závislý poddotaz není úplně nejrychlejší a navíc nikde nepočítáš řádky |
||
blazej44800 Profil |
#4 · Zasláno: 8. 5. 2012, 17:24:22 · Upravil/a: blazej44800
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 |
#5 · Zasláno: 8. 5. 2012, 17:39:44
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 |
#6 · Zasláno: 8. 5. 2012, 17:44:14
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 |
#7 · Zasláno: 8. 5. 2012, 17:54:21
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 |
#9 · Zasláno: 8. 5. 2012, 18:08:18
stačí nahradit
join za left join
|
||
blazej44800 Profil |
#10 · Zasláno: 8. 5. 2012, 18:09:17
SUPER! Veľká vďaka :)
|
||
Časová prodleva: 5 dní
|
|||
blazej44800 Profil |
#11 · Zasláno: 13. 5. 2012, 11:10:24
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 |
#12 · Zasláno: 13. 5. 2012, 11:47:59
Vydělíte rozdíl času počátku a současného času rozdílem časů mezi počátkem a koncem.
|
||
blazej44800 Profil |
#13 · Zasláno: 14. 5. 2012, 14:43:45 · Upravil/a: blazej44800
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)) |
||
Časová prodleva: 12 let
|
0