Autor | Zpráva | ||
---|---|---|---|
3wl4k Profil * |
#1 · Zasláno: 29. 9. 2007, 11:47:18
V mojom projekte mam tabulku uzivatelov, ktory mozu mat "statusy", tieto statusy su bud automaticke, alebo manualne (automaticke priradene rucne, automaticke, podla "bodov")
Tabulky: statusy_atomaticke: int potrebne_body varchar( 255) text statusy_rucne: int id varchar( 255) uzivatelia: int id int status_id NULL int body A vyberam z toho asi nejakym takymto query:
Ale dost pochybujem o vykonnosti toho riesenia a okrem toho sa mi zda dost bordel vybrat vsetky "hodnotenie" a potom ich zatriedit a vybrat to jedno... Nejake napady ako to zoptimalizovat? |
||
nightfish Profil |
#2 · Zasláno: 29. 9. 2007, 11:53:05
Nejake napady ako to zoptimalizovat?
pokud nenapíšeš, čeho chceš dosáhnout, tak dost těžko |
||
3wl4k Profil * |
#3 · Zasláno: 29. 9. 2007, 12:06:55
Najradsej by som joinoval len jednu tabulku podla hodnoty toho status_id (ale stale jednym query) a ked pripajam automaticky status, tak pripojit len jeden a to ten s najvacsim "points"
nativne by to bolo takto (ale sql to zatrhne): INNER JOIN `statusy_automaticke` ON `statusy_automaticke`.`potrebne_body` <= `uzivatelia`.`body` AND inymi slovami riadok s najvacsim id mensim nez `uzivatelia`.`body` |
||
nightfish Profil |
#4 · Zasláno: 29. 9. 2007, 12:09:12
3wl4k
napiš, čeho chceš dosáhnout, ne jak toho chceš dosáhnout i když mám pocit, že začínám trochu rozumět, a že bych zvolil jiné databázové schéma |
||
3wl4k Profil * |
#5 · Zasláno: 29. 9. 2007, 12:12:22
Napadom sa nebranim, takyto problem som neriesil... pointa je taka, ze chcem dat aminovi na webe moznost dat "specialny" status ludom, ktorym veria a pre ostatncyh nechat len nejaky "zrozumitelny" na zaklade ziskanych bodov (napr. "zaciatocnik, expert, pokrocily....")
|
||
Kajman_ Profil * |
#6 · Zasláno: 30. 9. 2007, 22:26:29
A takhle nějak by to nešlo?
select u.*, (select a.text from statusy_automaticke a where u.body>=a.potrebne_body order by a.potrebne_body order desc limit 1) from uzivatelia u |
||
Časová prodleva: 17 let
|
0