Geek tričko zdarma Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Avatar
Týna
Člen
Avatar
Týna:20. května 5:32

Ahoj, chtěla bych se zeptat,zda existuje něco co mi může spočítat počet stejných hodnot v řádku. Například mám třicet slouců a hodnoty ano, ne tak jestli existuje něco, co mi spočítá třeba počet hodnot ano. Dík

 
Odpovědět 20. května 5:32
Avatar
Jaroslav Smrž
Redaktor
Avatar
Jaroslav Smrž:20. května 7:07

Ahoj, k tomu, co potřebuješ se používá GROUP BY.

SELECT hodnota, SUM(nazev) FROM tabulka WHERE podminka GROUP BY hodnota";
Nahoru Odpovědět 20. května 7:07
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Týna
Jaroslav Smrž:20. května 7:09

Ty ale nechceš sčítat hodnoty, takže místo SUM bude COUNT

Nahoru Odpovědět 20. května 7:09
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Odpovídá na Jaroslav Smrž
Michal Haňáček:20. května 8:33

To co radis ale scita (at uz hodnoty, nebo vyskyty) ve sloupcich. Jestli dotaz chapu dobre, tak slecna/pani potrebuje scitat hodnoty v ramci radku. Aktualne (sedim si mozna na vedeni) me napada reseni pres union select je to ale desne neprehledne, blbe na udrzbu a neskutecne neefektivni ...

Nahoru Odpovědět 20. května 8:33
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Odpovídá na Týna
Tomáš Novotný:20. května 8:53

Zajímavé, v SQL jsem toto zatím řešit nepotřeboval. Ale od jinud. Když neexistovala rozumná funkce pro 'sčítání' v řádku, tak jsem používal transponování tabulky/řádku tj. prohození x->y. Z řádků se staly sloupce a naopak. Zkus se mrknout na funkce PIVOT() UNPIVOT().

Nahoru Odpovědět 20. května 8:53
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Týna
Uživatel sítě :20. května 8:55

Ahoj v případě celých čísel stačí sečíst výpis tabulek:

SELECT col1 + col2 AS total FROM table
WHERE id = 1

V případě řetězců by se dalo použít něco takového:

// Celkem ano
SELECT IF(col1 = 'yes', 1, 0) + IF(col2 = 'yes', 1, 0) AS totalYes FROM table
WHERE id = 1

// Celkem ne
SELECT IF(col1 = 'no', 1, 0) + IF(col2 = 'no', 1, 0) AS totalNo FROM table
WHERE id = 1
Editováno 20. května 8:57
Nahoru Odpovědět  +1 20. května 8:55
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Uživatel sítě
Tomáš Novotný:20. května 9:08

Uživatel sítě Chápu správně, že by se toto dalo použít na nějaké dynamickém sloupci? Tj. mít to k dispozici rovnou pro celou tabulku a ne to vždy nasčítávat pro jedno id?

Nahoru Odpovědět 20. května 9:08
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Tomáš Novotný
Peter Mlich:20. května 13:15

Nevim, jak moderni db, ale ma predstava o tabulce je pevny pocet sloupcu. Dynamiku ma smysl resit v pripade, ze casem pridas dalsi a jsi liny opravit sql dotazy.

 
Nahoru Odpovědět 20. května 13:15
Avatar
Odpovídá na Peter Mlich
Tomáš Novotný:20. května 14:13

Možná jsem se nepřesně vyjádřil. Měl jsem na mysli sloupec, který tam bude vždy, ale jeho obsah bude dán výpočtem .. tj. bude se aktualizovat dynamicky na základě změny obsahu sloupců, na nichž závisí.

Nahoru Odpovědět  +1 20. května 14:13
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Odpovídá na Tomáš Novotný
Uživatel sítě :20. května 16:23

Ano, pokud chápu správně jak to myslíš, tak každé sečtení se provede v rámci řádku.

Provedeš-li podobný SQL příkaz na tabulku o dvou řádcích bez definice řádku, tak výpis bude obsahovat 2 řádky.

Nahoru Odpovědět 20. května 16:23
Chybami se člověk učí, běžte se učit jinam!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.