Zjištění počtu záznamů – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zjištění počtu záznamů – MySQL – Fórum – Programujte.comZjištění počtu záznamů – MySQL – Fórum – Programujte.com

 

Kall_Ell0
Návštěvník
11. 5. 2010   #1
-
0
-

Ahoj všem, mám jeden vcelku složitý níže uvedený SQL výběr. Jak zjistím kolik to vrátí záznamů?
<br>



SELECT seznam_zajezdu.destinace, seznam_zajezdu.odlet, seznam_zajezdu.odlet_z, seznam_zajezdu.hotel,
seznam_zajezdu.ktg, seznam_zajezdu.dnu, seznam_zajezdu.strava_zakl, seznam_zajezdu.pokoj_typ,
seznam_zajezdu.cena_dosp, seznam_zajezdu.cena_dite_od, seznam_zajezdu.kodhot_skut, seznam_zajezdu.LM,
seznam_hotelu.stat, seznam_hotelu.oblast FROM seznam_zajezdu LEFT JOIN seznam_hotelu ON
seznam_zajezdu.kodhot_skut = seznam_hotelu.kodhot GROUP BY hotel

<br>
Tahá se to ze dvou tabulek a je složený podle toho co uživatel vybere. V tomto případě není vybráno nic, takže tam není klauzule WHERE. V DB je skoro milión řádků a když udělám tento výběr tak to nestihne v 60 sekundovém limitu. Proto chci vybrat jen část dat, ale potřebuji znát kolik to vrátí záznamů. jak na to?

Nahlásit jako SPAM
IP: 80.87.188.–
KIIV
~ Moderátor
+43
God of flame
11. 5. 2010   #2
-
0
-

neni jednodussi si tuhle tabulku vygenerovat do pomocne tabulky jen po kazde zmene? precijen spojovat pokazdy dve tabulky uplne cely je sebevrazda.. (obzvlaste kdyby se ti seslo vic lidi ... treba dva)
nedej boze, ze bys nad tema sloupcema, podle kterych joinujes, nemel indexy.. to uz by byla uplna totalka

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kall_Ell0
Návštěvník
11. 5. 2010   #3
-
0
-

myslím že ne, pokud by se tam sešlo více lidí a měl bych vytvořit několik temp tabulek s takovým množstvím dat, nevím. ale vyzkouším to. Nic méně, poradíš jak zjistit kolik to hodí záznamů? Dělá se to pomocí SELECT COUNT (*) AS pocet, ale mě to na tomto dotazu prostě nejde udělat :-(

Nahlásit jako SPAM
IP: 80.87.188.–
KIIV
~ Moderátor
+43
God of flame
11. 5. 2010   #4
-
0
-

na co vic tabulek? stejne to musi spojit uplne vsechny data.. tak je rovnou pripravis (nezavisle na tom kdo tam leze)
pokud tam je milion zaznamu a kazdy ma dejme tomu 1kB tak to mas 100MB.. jenze at chces nebo ne, stejne se ta tabulka vytvari, kdyz to spojuje dotaz..nemas sanci se tomu vyhnout... (akorat tady pro kazdej dotaz jedna.. )

v tomdle dotazu to bude mozna chtit treba sum(1) spis nez count.. count by pri trose stesti aspon hodil kolik je toho ve skupinach schovaneho jinak nic..

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kall_Ell0
Návštěvník
17. 5. 2010   #5
-
0
-

Ať zkouším jak zkouším tak se nejsem schopný dopátrat výsledku. Uvádím jednoduší dotaz:



SELECT SUM(1) AS zaznamu, id, LM, destinace FROM seznam_zajezdu WHERE LM='1' GROUP BY destinace

tohle funguje tak, že sum(1) vrátí počet seskupených záznamů v každé destinaci. Tohle je v mém případě k ničemu. Řekněme, že mám 10 destinací a v devíti destinacích je minimálně jeden zájezd, kterému vyhovuje podmínka LM="1". Je jasné, že dotaz vrátí devět řádků. Jak mám napsat tedy dotaz, který mě nevrátí ty data, ale jen číslo 9, jako počet řádků? Na straně PHP je k tomu určená funkce mysql_num_rows(), ale já to chci zjistit na úrovni MySQL, z důvodu rychlosti.

Nahlásit jako SPAM
IP: 80.87.188.–
liborb
~ Redaktor
+18
Guru
18. 5. 2010   #6
-
0
-

A co takto:

SELECT COUNT(DISTINCT destinace) FROM seznam_zajezdu WHERE LM='1'

Nahlásit jako SPAM
IP: 85.207.166.–
Kall_Ell0
Návštěvník
20. 5. 2010   #7
-
0
-

To liborb :
dík, tohle mě pomohlo

Nahlásit jako SPAM
IP: 80.87.188.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý