Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 20 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 12.02.24
Príspevky: 487
Témy: 138
Bydlisko: Bytča
Príspevok NapísalOffline : 15.09.2011 22:10

Mam takyto select z tabulky, t.j. zoradim si ludi podla priemernej hodnoty v stlpci prispevok

Kód:
$xyz = "SELECT nick_name, avg(prispevok) FROM prispevky_table group by nick_name ORDER by avg(prispevok) DESC ";
$vysledok = mysql_query($xyz) or die ("Stala sa chyba v spojeni s DB");


Tabulka je plna zaznamov a mam v kazdom zazname aj datum, v ktorom dany nick_name pridal zaznam do databazy.

Potrebujem select, ktory mi z tabulky vyberie a zoradi ludi podla avg(prispevok), ktori za poslednych 6 mesiacov vlozili minimalne 60 zaznamov. (urcite to bude maly pocet z celkoveho poctu prispievatelov)

V stlpci prispevok je cislo typu float, ktore moze byt od 0 po 10, aj desatinne.

Dakujem.


Offline

Správca fóra
Správca fóra
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 16.09.2011 7:50

skus pouzit having - neviem, v akom formate mas datum, takze zatial takto:
Kód:
SELECT nick_name, AVG(prispevok), count(*) pocet
FROM prispevky_table
WHERE datum >= SUBDATE(NOW(), INTERVAL 6 MONTH)
GROUP BY nick_name
HAVING pocet >= 60
ORDER BY AVG(prispevok) DESC







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 12.02.24
Príspevky: 487
Témy: 138
Bydlisko: Bytča
Príspevok Napísal autor témyOffline : 16.09.2011 8:15

datum mam takto: varchar(100) a vyzera presne v takomto formate: 14.09.2011

je to cez datapicker nahodene do tabulky


Offline

Správca fóra
Správca fóra
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 16.09.2011 8:19

zvolit horsi format datumu sa uz nedalo? :)







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 12.02.24
Príspevky: 487
Témy: 138
Bydlisko: Bytča
Príspevok Napísal autor témyOffline : 16.09.2011 8:31

ono ja to mam tak, ze

if (empty($mesiac)) $mesiac = date('n');
if (empty($rok)) $rok = date('Y');

a potom selecty koncia:
datum LIKE '%$mesiac.$rok'"; - ked hladam pre dany rok
datum LIKE '%$rok'"; - ked hladam pre dany mesiac

takze nejako to treba spojit do kopy nie ? ehm


Offline

Správca fóra
Správca fóra
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 16.09.2011 8:35

mozno toto pomoze, aj ked funkcia na lavej strane by sa pouzivat nemala:
Kód:
WHERE STR_TO_DATE(datum, '%d.%m.%Y') >= SUBDATE(CURDATE(), INTERVAL 6 MONTH)

Do buducna, nauc sa pouzivat typy stlpcov urcene pre casove udaje!







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 12.02.24
Príspevky: 487
Témy: 138
Bydlisko: Bytča
Príspevok Napísal autor témyOffline : 16.09.2011 8:42

a kebyze to spravim nejako tak, ze cely stlpec zmenim na format DATE ? nepomohlo by to ?
ta transformacia myslim by s udajmi dnu nemala nic spravit, ci ano ?
ptom by to nebolo lahsie ?
dik


Offline

Správca fóra
Správca fóra
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 16.09.2011 8:47

ked zmenis cisto len typ stlpca na date, hodnoty ti automaticky zmeni, len nie tak, ako by si si mozno prial - napriklad z datumu 14.09.2011 ti spravi 2014-09-20

ale nic ti nebrani v tom, aby si vykonal jeden update (upravis format datumu), zmenil typ stlpca a upravil svoj php kod...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 12.02.24
Príspevky: 487
Témy: 138
Bydlisko: Bytča
Príspevok Napísal autor témyOffline : 17.09.2011 12:18

dakujem ...
ale mam tu problem ...

proste teraz spravi toto: vypise tych ludi, pocet je OK, ale zoradi ich zle, lebo ich zoradi podla avg(prispevok) za ten interval 6 mesiacov - potrebujem zoradenie podla avg(prispevok) celkove

ako na to ? nejakym vnorenym SELECTOM ? a ten dnu bude to co si napisal a ten vonkajsi bude order by avg(prispevok) ale nebude obmedzeny tym casovym intervalom ... alebo nieco podobne ?

P.S. s tym datumom sorry, viem, ze som tam mal dat typ: date


Offline

Užívateľ
Užívateľ
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok NapísalOffline : 17.09.2011 15:05

Ten typ stĺpca budeš musieť zmeniť. Dátumové funkcie potrebujú pre fungovanie správny typ.
Až potom má zmysel riešiť to radenie....
Takže najprv update na správny formát dátumu a potom change column na správny typ...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 12.02.24
Príspevky: 487
Témy: 138
Bydlisko: Bytča
Príspevok Napísal autor témyOffline : 17.09.2011 15:17

camo: mne to stenley napisal aj s mojim typom, je to OK
poradit nevies s tym problemom, ktory mam aktualne ?


Offline

Užívateľ
Užívateľ
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok NapísalOffline : 17.09.2011 15:38

Aktuálne máš problém s typom mimo iné...
A napísal ti Stenley ako zmeniť typ stĺpca, alebo si tým myslel toto:
Kód:
WHERE STR_TO_DATE(datum, '%d.%m.%Y') >= SUBDATE(CURDATE(), INTERVAL 6 MONTH)

Stenley ti tu dokola píše, že ten typ je nanič a bolo by ho treba zmeniť.

Tú funkciu STR_TO_DATE(datum, '%d.m%.%Y') použi v update.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 12.02.24
Príspevky: 487
Témy: 138
Bydlisko: Bytča
Príspevok Napísal autor témyOffline : 17.09.2011 16:17

camo: prosim ta, neries, co je vyriesene. Ved sa ta slusne pytam, ci mi nevies pomoct s tym triedenim podla avg(prispevok) ale nie za poslednych 60 dni, ale celkovo, ved som to tu jasne myslim napisal.
problem s typom NEMAM, neviem ako Ti to este mam napisat inak :(


Offline

Užívateľ
Užívateľ
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok NapísalOffline : 18.09.2011 11:16

Myslím, že tá podmienka na tých 60 záznamov má byť v having. Ale či sa nemýlim neviem. Netestoval som to.

Kód:
SELECT nick_name, AVG(prispevok), count(*) pocet
FROM prispevky_table
GROUP BY nick_name
HAVING (select count(*) as pocet from prispevky_table group by nick_name where pocet > 60 and datum >= SUBDATE(NOW(), INTERVAL 6 MONTH))
ORDER BY AVG(prispevok) DESC


Na viac sa asi nezmôžem...

A som presvedčený, že máš problém s typom stĺpca!

EDIT: po 15 hodinách 53 minútach

Alebo skôr takto:
Kód:
select nick_name, avg(prispevok), count(*)
from prispevky_table t1
join (select nick_name meno2, count(*) pocet
                 from prispevky_table
                 where prispevky_table.datum >= SUBDATE(NOW(), INTERVAL 6 MONTH)
                 group by meno2
                 having pocet>60) t2
on t1.nick_name=t2.meno2;


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 12.02.24
Príspevky: 487
Témy: 138
Bydlisko: Bytča
Príspevok Napísal autor témyOffline : 19.09.2011 9:34

camo, ten zapis posledny asi nebude dobry, pise mi chybu, zly syntax

ja som to zapisal takto podla teba:
Kód:
$poziadavkaOK2 = "SELECT nick_name, AVG(prispevok), count(*)
FROM prispevky_table  t1
join (SELECT nick_name meno2, count(*) pocet
                 from prispevky_table
                 WHERE STR_TO_DATE(cas, '%d.%m.%Y') >= SUBDATE(NOW(), INTERVAL 6 MONTH)
                 group by meno2
                 having pocet >= 60) t2
on t1.nick_name=t2.meno2)";

$resultOK2 = mysql_query($poziadavkaOK2) or die ("Stala sa chyba v spojeni s DB");


v phpmyadmin: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
LIMIT 0, 60' at line 1

stenley, poradis ty ? hore som pisal, kde mam problem s tym tvojim zapisom


Offline

Užívateľ
Užívateľ
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok NapísalOffline : 19.09.2011 13:35

Neviem kde sa tam bere ten limit. Nič také tam nemám. A zdá sa, že PhpMyAdmin má hlášky navlas rovnaké ako konzola, tak to skúšaj radšej tam. Je to rýchlejšie

Mne tá logika fungovala. Priemer z celkového príspevku a len tie ktoré mali počet za posledné obdobie väčší ako dané číslo. Ja som robil ale s číslami nie s dátumami a už vonkoncom som to nekonvertoval za jazdy...

EDIT:

Tá zátvorka na konci nemá byť! Neviem ako sa mi tam dostala...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 12.02.24
Príspevky: 487
Témy: 138
Bydlisko: Bytča
Príspevok Napísal autor témyOffline : 19.09.2011 14:16

limit vychadza asi z toho having pocet >= 60

dal som prec zatvorku: :> #1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause


Offline

Správca fóra
Správca fóra
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 19.09.2011 15:07

skus toto:
Kód:
SELECT a.nick_name, AVG(prispevok) priemer
FROM prispevky_table a
INNER JOIN (
   SELECT nick_name, count(*) pocet
   FROM prispevky_table
   WHERE STR_TO_DATE(datum, '%d.%m.%Y') >= SUBDATE(CURDATE() , INTERVAL 6 MONTH)
   GROUP BY nick_name
   HAVING pocet >=60
) b
USING(nick_name)
GROUP BY a.nick_name
ORDER BY priemer DESC







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok NapísalOffline : 19.09.2011 15:38

Len tak pre istotu sa spýtam, aká je to verzia Mysql.
Lebo count(*) by mala pracovať aj bez group by.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 12.02.24
Príspevky: 487
Témy: 138
Bydlisko: Bytča
Príspevok Napísal autor témyOffline : 19.09.2011 15:58

stenley, vyzera, ze je to OK, vdaka, este to skontrolujem .... ale asi hej, dalo tych istych ludi, ako predtym a spravne zoradilo (teda podla celkoveho priemeru) a vybralo pekne len ludi podla podmienky minimalneho poctu 60 za poslednych 6 mesiacov

// pridané po 12 minútach od posledného príspevku

camo píše:
Len tak pre istotu sa spýtam, aká je to verzia Mysql.
Lebo count(*) by mala pracovať aj bez group by.

Verzia MySQL klienta: 5.0.51a


Odpovedať na tému [ Príspevkov: 20 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Ako pridat do playlistu prikaz na vypnuie hudby v danom case

v Ostatné programy

0

260

18.10.2012 19:54

Dadko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Select v CASE je to mozne?

v Databázy

1

331

08.03.2012 16:41

GoodWill Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vypis zavisly na vypise predchadzajuceho vypisu

v Databázy

2

476

14.07.2011 22:59

jablko05 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. typ grafickej karty v danom notebooku

v Notebooky a netbooky

2

336

26.11.2013 16:03

lenovacik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Rozdelenie textu po urcitom pocte znakov

v PHP, ASP

1

383

02.12.2008 17:29

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Odosielanie e-mailov (vo veľkom počte)

v PHP, ASP

2

397

02.06.2013 19:30

DeiForm Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zobrazenie po pocte vacsom ako 1

v JavaScript, VBScript, Ajax

3

375

11.03.2010 19:04

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. formular: presun <option> zo <select> do <select>

v JavaScript, VBScript, Ajax

2

745

28.09.2009 15:27

tomast7 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hodnotenie prispevkov

v Správy pre vedenie fóra

10

1281

01.12.2008 22:38

tlacitko Enter Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zaratavanie prispevkov

v Redakčné systémy

2

588

27.07.2007 19:00

kajbo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pocet prispevkov

v Správy pre vedenie fóra

1

962

31.01.2008 15:56

Peterson Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mazanie príspevkov

v Správy pre vedenie fóra

8

1210

04.11.2008 15:42

tommy1104 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zmenšovanie prispevkov

v Správy pre vedenie fóra

6

1020

21.01.2010 19:26

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Označenie príspevkov

v Redakčné systémy

5

1255

15.09.2005 17:07

Spirit Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. mazanie prispevkov

v Správy pre vedenie fóra

17

2152

21.02.2008 14:56

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pocet novych prispevkov

v Redakčné systémy

15

1013

07.04.2007 23:09

soft-x- Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra