Autor | Zpráva | ||
---|---|---|---|
H13 Profil |
#1 · Zasláno: 23. 11. 2014, 16:10:03
Ahoj,
potřeboval bych poradit se zobrazením součtu položek - chronologicky pro každý den s tím, že pokud žádný součet položek v daném dni nebude, pak se vypíše datum se součtem 0. Tedy, aby, i když v databázi datum chybí, tak aby se vypisovalo. Příklad: Položky v databázi, výpis bude podle kritérií od 2014-11-23 do 2014-11-29 ID|IP|Datum 1|100.100.100.100|2014-11-23 2|101.100.100.100|2014-11-23 3|105.100.100.100|2014-11-24 4|106.100.100.100|2014-11-27 5|108.100.100.100|2014-11-29 Výsledek by měl být: 2014-11-23 ... 2 2014-11-24 ... 1 2014-11-25 ... 0 2014-11-26 ... 0 2014-11-27 ... 1 2014-11-28 ... 0 2014-11-29 ... 1 Zkoušel jsem hledat, zkoušel jsem různé varianty, ale nedospěl jsem k správnému řešení, pokud by měl někdo tip nebo odkaz na stránku, kde se řešilo toto nebo něco podobného, byl bych za to rád. Děkuji. |
||
lionel messi Profil |
#2 · Zasláno: 23. 11. 2014, 16:27:34
SELECT *, COUNT(datum) AS pocet FROM `tabulka` GROUP BY `datum` Prvá tabuľka (ip) ID|IP|Datum_id 1|100.100.100.100|1 2|101.100.100.1001 3|105.100.100.100|2 4|106.100.100.100|5 5|108.100.100.100|7 Druhá tabuľka (datumy) ID|Datum 1| 2014-11-23 2| 2014-11-24 3| 2014-11-25 4| 2014-11-26 5| 2014-11-27 6| 2014-11-28 7| 2014-11-29 SELECT *, COUNT(datum) AS pocet FROM ip RIGHT OUTER JOIN datumy d ON datum_id = d.id GROUP BY datum |
||
H13 Profil |
Ahoj, díky, tam jde o to, že datum není pevně dané, prostě to může být od 31.7.2013 do 25.2.2014
Prostě pro výpis si určuji filtr: OD a DO - jde vlastně o výpis dnů (chronologicky bez vynechání) a pokud v tom dni jsou nějaké součty, pak je sečíst, pokud den není v databázi, pak má součet nulu. Teoreticky jsem na to návod našel: vytvořit nějakou proceduru, co vypíše ten interval, uložit do dočasné tabulky a agregovat s tabulkou součtů (vlastně podobně jak to popisuješ). Teď jde o to, jestli pak není lepší použít např. php a vytvořit nějaké pole dat bez nutnosti dočasné tabulky? |
||
H13 Profil |
#4 · Zasláno: 24. 11. 2014, 18:23:09
Tak jen pro info, pokud by to někoho zajímalo - nejlepší mi přišlo použít funkce z PHP (http://php.net/manual/en/book.datetime.php - DatePeriod ) pro výpis dat a tyto výsledky jsem sloučil s výpisem z databáze.
|
||
bestik_63 Profil |
#5 · Zasláno: 24. 11. 2014, 19:42:42
Já si myslím, že pomocí klasického příkazu SELECT nikdy nedocílíš vypsání něčeho co v databázi není. Budeš si muset vytvořit nějakou funkci, která zjistí datum a pokud nějaký datum chybí, tak připíše záznam. Toto asi docílíš funkcí přímo v SQL, ale i v PHP a výsledek bude stejný. Pokud tedy SQL používáš v kombinaci s PHP, tak bych spíše doporučoval směřovat tímto směrem. Funkce v SQL nejsou zas tak těžké, ale ne každý je umí. Maximálně bys je musel zkusit nastudovat no :-)
|
||
Časová prodleva: 9 let
|
0