Autor Zpráva
oogi
Profil
Potřebuju vynechat delší řádky, jejichž "počátek" se shoduje s předcházejím kratším slovem.

např. mám v tabulce:
sýkora
sýkora koňadra
sýkora parukářka
sýkora modřinka
pes
pes dingo

a chci, aby výsledkem dotazu byly řádky "sýkora" a "pes"... (v DB mám cca 1000 záznamů podobného typu)

Jde to nějak ?
souki
Profil
přesně nevím, tak zkusím nakopnout... existují v mysql funkce pro práci s textem.. jednou z nich půjde načíst pouze text do mezery a pak použít group by
oogi
Profil
souki
To jde přes regulární výrazy, ale probllém je, že já to potřebuju ještě porovnat s předcházejícími slovy, protože u některých prvků budu potřebovat aby to zobrazilo třeba první dvě slova:

doplnění příkladu:

Mnichov
Mnichov - letiště
Mnichov a přilehlé oblasti
Frankfurt nad Mohanem
Frankfurt nad Mohanem a jeho historické centrum
Frankfurt nad Mohanem - koupaliště sever
Frankfurt nad Mohanem - koupaliště jih

a chci, aby výsledkem byl "Mnichov" a "Frankfurt nad Mohanem"
myslím, že tento příklad vysvětluje lépe, co potřebuju - tedy vynechat záznam ve výsledku, pokud je pouze "rozšířením" záznamu již nalezeného

Určitě by to šlo udělat doplněním pomlček za základní pojmy, ale mám tam příliš záznamů na to abych to předělával...
tiso
Profil
oogi použi systém z vyhľadávačov - vyhľadávanie presnej frázy - "Frankfurt nad Mohanem"
oogi
Profil
tiso
Nevím zda jsi m správně pochopil, ale já potřebuji z daných údajů v DB, řekněme že jsou to třeba názvy článků, vybrat ty základní řetězce (Mnichov, Frankfurt nad Mohanem), které budou sloužit jako složky a v nich budou všechny články ve kterých se vyskytuje daný název kategorie (Mnichov, Frankfurt nad Mohanem).
tiso
Profil
oogi aha... čo naozaj (presne) v tej DB máš?
oogi
Profil
Články na jednotlivá témata se liší třeba jen dodatkama, tak potřebuju z toho vysekat ty kategorie
roberta
Profil
napadá ma iba urobiť SELECT (záznamy zoradené podľa počtu znakov)

a v php stránke
-urobiť si pole vypísaných reťazcov (na začiatku prázdne)
-a pri vypisovaní porovnávať, či sa vypisovaný reťazec nenachádza v poli vypísaných reťazcov. ak sa nenachádza, tak ho vypíšeš a pridáš do poľa vypísaných reťazcov, ak sa nachádza prejdeš na ďalší záznam

inak mysql je relačná DB, tak prečo si neurobíš jednu tabuľku "mesta", druhú tabuľku "casti_miest" ? potom by si iba vypísal tabuľku "mesta" a nemal by si takéto problémy...
oogi
Profil
roberta
ASi by to šlo, ale vzhledem k tomu, že vypisuji na stránku třeba až 300 záznamů, by to mohlo citelně zpomalit načítání.

Jde o to, že s každým novým místem, bych musel do tabulky mesta vkládat města, a já to potřebuji co nejvíc flexibilní.
tiso
Profil
oogi myslel som presný príklad pár riadkov z databázy - názvy stĺpcov a hodnoty...
oogi
Profil
ID : 1
title : Mnichov odpočívadlo
adresa : mnichov-odpocivadlo

ID : 2
title : Mnichov
adresa : mnichov

ID : 3
title : Mnichov letiště
adresa : mnichov-letiste

ostatni sloupce nejsou dulezite...
roberta
Profil
Jde o to, že s každým novým místem, bych musel do tabulky mesta vkládat města, a já to potřebuji co nejvíc flexibilní.
a teraz vari nemusíš vkladať tie mestá?

inak teraz to máš neflexibilné... máš úplne zle navrhnutú DB. okrem toho ti zaberá aj viac miesta, kedže sú tam duplicity. a z toho vyplynul tvoj zbytočný a podivným spôsobom riešiteľný problém. možno, kebyže si tú DB navrhneš správne, už by si mal všetko dávno hotové bez zbytočných problémov :)
oogi
Profil
roberta
Nemyslím si, že by ta databáze byla navrhnutá špatně, ale nějak jsem nepočítal s tím, že bych někdy potřeboval s tím něco takovéhleho dělat.
Abys mohl objektivně posuzovat správnost navrhnutí, musel bys znát všechny údaje se kterými se pracuje.
Mastodont
Profil
oogi
No nejrychlejší asi bude, když si ty kategorie vytvoříš ručně. Případně si pomož select distinct, který vybere všechna první slova z řádků.
Retal
Profil
SELECT DISTINCT(LEFT(nazev, LOCATE(' ', nazev))) AS rod

FROM tabulka
tiso
Profil
...stále nie som z toho múdrejší, tak to nechám tak...

Abys mohl objektivně posuzovat správnost navrhnutí, musel bys znát všechny údaje se kterými se pracuje.
Vyhovuje tá databáza 3NF?
Toto téma je uzamčeno. Odpověď nelze zaslat.