Autor Zpráva
xlifer
Profil
Je možné seskupovat záznamy výsledků podle masky?

Jak to myslím?

Když budu chít výsledky dotazu seskupit a omezit duplicitní záznamy, ale ješte podle např. toho, že vše začinající na TE*

Příklad - sloupec slova:

TEST
TETA
BABETA
SPAGETA

SELECT * FROM tabulka WHERE podminka GROUP BY slova TE*

a vypsalo by to pouze

TEST
TETA

protože začínají na TE*

Nikde jsem na to nic nenašel, díky za případný tip.
o_O
Profil
Pravděpodobně potřebujete toto:
SELECT * FROM tabulka WHERE sloupec LIKE 'TE%'  GROUP BY slova

Procenta v apostrofech pak vyznačují Vaši hvězdičku. Vypíše vše, co začíná na TE.
joe
Profil
Můžeš hledat požadovaný řetězec v tom sloupci, například

SELECT * FROM tabulka WHERE sloupec LIKE 'TE%'
o_O
Profil
panther:
imho nechceš groupovat

xlifer:
Když budu chít výsledky dotazu seskupit a omezit duplicitní záznamy, ale ješte podle např. toho, že vše začinající na TE*

WHERE podminka GROUP BY slova TE*

:-)

Myslím, že duplicitu by jste však mohl řešit již na úrovni MySQL (klíčem unique).
Tori
Profil
IMHO bude lepší použít omezení až na jednotlivé skupiny:
SELECT * FROM tabulka WHERE podminka GROUP BY slova HAVING sloupec LIKE 'TE%'
- nebudou se regulárem prohledávat všechny řádky tabulky, ale jen ty unikátní.
Neboli bereme postupně stále jemnější síta: SELECT vybere všechny řádky, WHERE pustí dál jen část z nich, GROUP BY omezí zbytek na řádky s unikátní hodnotou v jednom sloupci, HAVING z těch unikátních hodnot pustí jen některé, a LIMIT bez filtrování vysekne část z výsledné tabulky. Dobře se to představuje třeba na třídění perel / černého prachu / štěrku podle velikosti zrn.
Kajman_
Profil *
Tori:
Pokud bude na sloupci sloupec index, tak bude lepší dát toto omezení do where místo do having.
xlifer
Profil
Tori:

Super, tento návrh se mi libí. HAVING tomu dodá přesně co jsem potřeboval.

A lze v LIKE použít regulární výraz? Už si vymyšlím moc, ale kdyby náhodou, tak pak by to byl dost mocný nástroj.
o_O
Profil
Na regulární výrazy slouží REGEXP.

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:

0