Autor | Zpráva | ||
---|---|---|---|
maarlin Profil |
#1 · Zasláno: 3. 8. 2009, 15:59:13 · Upravil/a: maarlin
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 * |
#2 · Zasláno: 3. 8. 2009, 16:16:21
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 |
#3 · Zasláno: 3. 8. 2009, 16:33:22
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 |
#4 · Zasláno: 3. 8. 2009, 16:53:08
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 |
#5 · Zasláno: 3. 8. 2009, 17:01:25
„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 |
#6 · Zasláno: 3. 8. 2009, 17:03:28
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 |
#7 · Zasláno: 3. 8. 2009, 17:19:17 · Upravil/a: maarlin
Jasně, ovšem Kajmanova cesta vyžaduje rozdělení toho hledaného řetězce - do pole - což můžu těžko...
|
||
Kajman_ Profil * |
#8 · Zasláno: 3. 8. 2009, 17:30:40
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 |
#9 · Zasláno: 4. 8. 2009, 09:10:28
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'). |
||
Časová prodleva: 16 let
|
0