Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

2 Mysql príkazy v jednom

timbulko
verified
rating uzivatele
(9 hodnocení)
21. 1. 2008 17:28:07
Zdravím,
mám modelovú tabuľku:
A teraz potrebujem zobraziť pri prihlásenom užívateľovi počet správ spolu (odoslané aj prijaté) a počet neprečítaných správ (prijatých):
A rád by som tieto 2 sql príkazy dal (kvôli stále sa zvyšujúcej záťaži) do jedného. Ale nie som si istý, či to pôjde keď sú v obidvoch príkazoch rôzne WHERE podmienky.
Vedel by niekto nejaké elegantné riešenie ako to spraviť?
Vďaka:thumbup:
21. 1. 2008 17:28:07
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38278
Milan Kryl
verified
rating uzivatele
(26 hodnocení)
21. 1. 2008 19:44:44
Něslo by to udělat tak, že do where dáš obě podmínky a potom budeš počítat splnění podmínek v selectu?
SELECT COUNT( pre = $user->id ) as p1, COUNT( od = $user->id ) as p2 ...
Nicmene nevim, jestli to dovoli syntaxe COUNT ( )
21. 1. 2008 19:44:44
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38277
Michal Řehák
verified
rating uzivatele
(4 hodnocení)
21. 1. 2008 20:04:31
co takhle? myslim ze tudy vede cesta
SELECT count(s1.id) AS prectenych,
(SELECT count(s2.id)
FROM spravy s1
WHERE (s1.od = %d OR s1.pre = %d)) AS neprectenych)
FROM spravy s2
WHERE s2.pre = %d AND s2.precitana = 0
za ty %d si dosad ty hodnoty z php a melo by to splnit tvoje prani
21. 1. 2008 20:04:31
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38276
Michal Řehák
verified
rating uzivatele
(4 hodnocení)
21. 1. 2008 20:07:11
je v tom trochu bordel, tak oprava :)
SELECT count(s1.id) AS prectenych,
(SELECT count(s2.id)
FROM spravy s2
WHERE (s2.od = %d OR s2.pre = %d) AS neprectenych)
FROM spravy s1
WHERE s1.pre = %d AND s1.precitana = 0
ted uz jsem snad nic neprehlidnul :)
21. 1. 2008 20:07:11
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38275
jestli je precitana bud 0 nebo 1, tak se to da trosku prasacky, ale na vykon to bude asi nejlepsi
Select count(id) as pocetCelkem, sum(precitana) as pocetPrectenych from spravy
21. 1. 2008 20:23:13
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38274
MichalekII
verified
rating uzivatele
(2 hodnocení)
22. 1. 2008 12:47:52
A co ty dotazy jen prostě spojit pomocí příkazu UNION
22. 1. 2008 12:47:52
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38273
Michalekll: to ale budou porad dva selecty, s temer stejnou zatezi SQL serveru ne?
22. 1. 2008 13:47:47
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38272
Pokud dobře čtu ty dotazy, ptáš se na počet zpráv ve schránce a počet nepřečtených zpráv. Ta dvě čísla se ale přece mění jen při zaslání zprávy. Proč je neuložíš přímo do tabulky uživatelů a nezměníš jen při odeslání / přečtení zprávy? Získáš ji pak prostým SELECTem rovnou při načítání uživatelova profilu.
22. 1. 2008 13:53:30
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38271
MichalekII
verified
rating uzivatele
(2 hodnocení)
22. 1. 2008 14:37:40
Napsal rammi;29646
Michalekll: to ale budou porad dva selecty, s temer stejnou zatezi SQL serveru ne?
Ano i ne, v podstatě ušetříš na komunikaci mezi PHP a Mysql
22. 1. 2008 14:37:40
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38270
Vebloud
verified
rating uzivatele
23. 1. 2008 11:04:08
Napsal Retal;29647
Pokud dobře čtu ty dotazy, ptáš se na počet zpráv ve schránce a počet nepřečtených zpráv. Ta dvě čísla se ale přece mění jen při zaslání zprávy. Proč je neuložíš přímo do tabulky uživatelů a nezměníš jen při odeslání / přečtení zprávy? Získáš ji pak prostým SELECTem rovnou při načítání uživatelova profilu.
A aktualizace dat u uživatelova profilu se dá řešit Trigerem, tudíž odpadne veškerá komunikace s PHP.
Náročné dotazy je taky lepší řešit uloženými procedurami, protože jsou už přeložené, respektive kontrola syntaxe už proběhla a kontrolují se pouze parametry, takže je to taky rychlejší.
23. 1. 2008 11:04:08
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38269
Ivan L.
verified
rating uzivatele
23. 1. 2008 11:28:40
Napsal Vebloud;29935
Náročné dotazy je taky lepší řešit uloženými procedurami, protože jsou už přeložené, respektive kontrola syntaxe už proběhla a kontrolují se pouze parametry, takže je to taky rychlejší.
Ukládá si MySQL do procedur i exekuční plán?
23. 1. 2008 11:28:40
https://webtrh.cz/diskuse/2-mysql-prikazy-v-jednom/#reply38268
Pro odpověď se přihlašte.
Přihlásit