Autor Zpráva
wolf_2006
Profil *
Ahoj,

mám tabulku s poli id a pocitadlo. Hodnota počítadla by měla být vždy větší, než hodnota předchozí.
Potřeboval bych pomoc s dotazem, který by zjistil, zda jsou hodnoty pole pocitadlo opravdu vzestupné
a případně vypsal záznamy, kde tomu tak není.

Rád bych to řešil pouze na úrovni db, používám MySQL.

Díky
Kajman
Profil
Toto by mělo potvrdit, že je vše v pořádku
SELECT 1 ok
FROM   tabulka
HAVING Count(*) = Count(DISTINCT pocitadlo)
       AND Min(pocitadlo) = 1
       AND Max(pocitadlo) = Count(*)

Toto by mohlo najít řádky, ke kterým neexistuje řádek s počítadlem o jedno menším nebo je takových řádků více než jeden...
SELECT t1.pocitadlo chyba_pred,
       Count(*)     predchudcu
FROM   tabulka t1
       LEFT JOIN tabulka t2
              ON t1.pocitadlo - 1 = t2.pocitadlo
WHERE  t1.pocitadlo > 1
GROUP  BY t1.pocitadlo
HAVING Count(*) != 1 
wolf_2006
Profil *
Kajman:
hodnota počítadla nemusí být vyšší pouze o 1, ale jen vyšší, ale zkusím to dle tvého vzoru, díky.
Kajman
Profil
Aha, mně přišlo, že chcete kontrolovat, zda je v pocitadlo souvislá řada.

Pokud potřebujete kontrolovat že při větším id je i větší počítadlo, tak zkuste takto najít problémy

SELECT t1.id  id_1,
       t1.pocitadlo pocitadlo_1,
       t2.id  id_2,
       t2.pocitadlo pocitadlo_2
FROM   tabulka t1
       JOIN tabulka t2
         ON t1.id < t2.id
            AND t1.pocitadlo >= t2.pocitadlo

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: