Autor Zpráva
maarlin
Profil
Mám dvě tabulky, např.
id | name      | key
----------------------------
 1 | Žlutý kůň        | zluty-kun
----------------------------
 2 | Ďábelské ódy | dabelske-ody

a
id | name       | key
----------------------------
 1 | Pelhřimov        | pelhrimov
----------------------------
 2 | České Budějovice | ceske-budejovice


k tomu dostanu třeba o scriptu výraz "zluty-kun-pelhrimov" a potřebuji vybrat z první tabulky záznam, kde key = "zluty-kun" a z druhé tabulky kde key = "pelhrimov".
Předpokládám, že použiju nějak spojování sloupcí pomocí CONCATE(), ale není mi jasné jak...
Ideálně by ten dotaz měl vrátit něco takového jako toto:
table1.key| table2.key
----------------------------
zluty-kun | pelhrimov
Kajman_
Profil *
Zkusil bych z první tabulky vyhledat
where key in ('zluty','zluty-kun')

A když to něco najde, tak hledat v druhé příslušný konec.

V jednom dotaze to bude nesmyslně náročné na server.
maarlin
Profil
Neptal bych se zbytečně na dva dotazy...
Problém je v tom, že není prakticky spolehlivě možné ten řetězec rozdělit na dva... jako 'zluty-kun' a 'pelhrimov'...
Prostě dostanu fixní řetězec 'zluty-kun-pelhrimov' a vzhledem k tomu, že pomlčka je užita i jako oddělovač slov, není možné to takhle dělit do dotazů...
tiso
Profil
maarlin: za predpokladu že to páruješ podľa id-čka:
$query="select table1.key, table2.key from table1 join table2 on table1.id=table2.id where CONCAT(table1.key, '-', table2.key)='$text'";
maarlin
Profil
za predpokladu že to páruješ podľa id-čka
Díky za příklad, ale tabulky nejsou bohužel nijak propojené.
Spojuji je pouze v dotazu a pouze z toho důvodu, že samotný hledaný výraz nemůžu rozdělit...
tiso
Profil
maarlin: tak mi vysvetli ako to chceš vlastne nájsť? Kajman_ ti naznačil cestu ktorou sa máš vydať, inak to nepôjde...
maarlin
Profil
Jasně, ovšem Kajmanova cesta vyžaduje rozdělení toho hledaného řetězce - do pole - což můžu těžko...
Kajman_
Profil *
rozdělení toho hledaného řetězce - do pole - což můžu těžko

A čím vkládáte ten řetězec do dotazu, že tam nemůžete vygenerovat možné začátky podle pomlček?

Ono to v jednom dotaze půjde, jen s tím concatem by to bylo příliš výpočetně náročné.

select t1.key, t2.key
from (select key from table1 where key in ('zluty','zluty-kun')) t1, table2 t2
where t2.key = substr('zluty-kun-pelhrimov',length(t1.key)+2)
maarlin
Profil
Tak mohl bych vlastně vygenerovat všechny varianty dotazů - to mě nenapadlo... :)
když bude třeba předáno "zluty-kun-ceske-budejovice", tak se budu ptát, jestli to vyhoví těmto variantám:
('zluty', 'zluty-kun', 'zluty-kun-ceske', 'zluty-kun-ceske-budejovice').

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: