Autor Zpráva
happy
Profil
Ahoj

jde v mysql vybrat sloupce které mají stejný začátek?

mám db a vní text_cesky, text_rusky, text_japonsky a když dělám select a nechci dělat select * když potřebuji jen pár sloupců, jde udělat něco jako select text* ?

pokud ne jak jinak vhodně vybrat jen sloupce začinající na text ?
Kajman_
Profil *
Musíte je vyjmenovat. Jejich seznam se v mysql dá vyčíst díky
show columns

nebo v novějších verzích dotazem na information_schema.COLUMNS
__construct
Profil
SHOW COLUMNS FROM `tabulka` LIKE 'text%';
Joker
Profil
happy:
Jen poznamenám, že to dost zavání špatným návrhem databáze.
Indicie:
1. Indexované názvy sloupců (text_cesky, text_rusky, … ~ text1, text2, …)
2. Samotný dotaz „Vybrat všechny sloupce, jejichž název začíná…“ je dost podezřelý (souvisí s 1.)
3. Pokud nejde o nástroj pro správu databáze, je dost divné nevědět ve chvíli výběru jaké sloupce vlastně potřebuji vybrat (jak se s nimi pak bude pracovat?!)
happy
Profil
__construct:
jj to je mi jasné, jenže nepotřebuji názvy sloupců ale obsah v těchto sloupcich. sloupce si nemám problém poskládat pomocí jazyků. šlo mi spíš o to jestli neexistuje to castnazvu*, což by mi ulehčilo práci

Joker:
zajímalo by mě, jaký způsob ukládání multijazyčných textů preferuješ ty?

osobně mi připadá ukládat je jako sloupce jako nejlepší. mám pak něco jako text_cs | text_sk | text_ru. výhodu vidím hlavně vtom že je to v jedné tabulce => snadná a rychlá manipulace, vhodné pro vypsání v gridu. jedinou nevýhodou dle mého je že při přidání / ubrání jazyka se mění struktura tabulky.
Kajman_
Profil *
http://php.vrana.cz/ulozeni-jazykovych-verzi.php
happy
Profil
Kajman:
já vycházel z podobného článku stejného autora
http://php.vrana.cz/storing-multilingual-records-in-the-mysql-database.php z Translation directly in the data table.
Joker
Profil
happy:
zajímalo by mě, jaký způsob ukládání multijazyčných textů preferuješ ty?
Tady to vcelku jasně ukazuje na to, že "text" a "jazyk" by měly být sloupce nějaké tabulky.

výhodu vidím hlavně vtom že je to v jedné tabulce => snadná a rychlá manipulace
Rychlá a snadná? Když budu předpokládat, že jazyky lze přidávat a odebírat, tak místo:
- „Vyber řádek, kde id=X a jazyk=Y ze spojení tabulek podle id“
bude:
- „sestav název sloupce kde by měl být text. Zjisti, jestli tabulka má daný sloupec. Pokud nemá, chyba. Jinak vyber daný sloupec z tabulky, kde id=X“

Věci jako vypsat všechny jazyky ve kterých je dokument k dispozici když ani nevíte kolik „jazykových“ sloupců v tabulce vlastně budou taky zábava.

Zároveň pokud někde bude seznam jako "cs=čeština, en=english, …", bude nutné mít kód, který bude udržovat seznam a sloupce tabulky synchronizované a bude řešit situace, kde se povede aktualizace jednoho a nepovede aktualizace druhého.
happy
Profil
Joker:
jen pár věcí

mam tabulku s jazyky - id code name
a pak u multijazyčných sloupce textcs textsk ...atd

výběr z jednoho jazyku je tak, že do dotazu se dosadi požadovany jazyk a dle mého už to jednodušší být nemůže (neřeším zda sloupec existuje - to je zaležitost vytvoření nového jazyka).
pokud chci sloupce ve všech jazycich tak je nutne dotaz poskladat pomoci foreach language pridej do select sloupecLanguage - naštěstí člověk často nepotřebuje všechny jazykové verze (zatim jsem to potreboval jen v administraci).
jazykovych sloupcu je tolik kolik je jazyku
cs=čeština je právě v té tabulce s jazyky

dle mého hlavní problematická část je přidávání /mazání a update jazyků. jinak mi dotazy přijou velmi jednoduché

dříve jsem také měl jednu tabulku na data (id,time,price...) a kni tabulku data_translate (id,id_data, language, text....) dotazy byly o něco složitější, přidávání /mazání a update jazyků zase mnohem jednodušší. nicméně problém jsem měl s výpisem do grid struktur kdy jsem potřeboval dat vedle sebe do grid sloupce třeba time /price / textcs / textru kdy jazyková data jsem měl na různých řádcích a převod do sloupců byl dle mého dosti problematický.

ale jinak každému určitě vyhovuje něco jiného. idelání návrh dle mého pro sql databáze být nemůže.

jinak jsem zapomněl poděkovat Kajman za odpověd na mou otázku "Musíte je vyjmenovat" takže Díky.

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