Zdravim, mam problem se spojovanim tabulek. Tabulky spojuji pres sloupecky, z nichz jeden je typu double a druhy je typu varchar. Vse funguje v poradku. Ale v techto sloupeccich potrebuji pouzivat i lomitka, takze prvni sloupecek musim pretypovat na varchar. Bohuzel v tom pripade uz se mi uz tabulky nespoji. Pouzivam klasicky kartezsky soucin. Nevi nekdo, kde delam chybu? Proc se mi nespoji dva sloupecky typu varchar? Jak to obejit? Zatim jsem na to nikdy nenarazil a ani v chytre knizce se o tom nepise. Diky za jakoukoli radu.
Chyba bude v návrhu. Spojování se provádí povětšinou sloupečky se stejným typem. Pokud to tak není je chyba v návrhu. Zkus to předhodnotit..
Marek - to je prave to, co mi neni jasne. Kdyz spojim double + varchar -> funguje, ale varchar + varchar -> nefunguje. A potrebuji to spojovat pres hodnoty, ktere obsahuji 3-5 cisel a nektere i jedno lomitko.
A nemas tam treba nejaky krok, kde by se to mohlo nejak implicitne prevest na cislo, pak by se mohlo stat, ze to s tim lomitkem se prevede na nulu a pak to nefunguje.
spojujes tabulky pres join ala, on t1.soupecek = t2.sloupecek, kde sloupecek je varchar nebo je to slozitejsi?
Mam tabulky:
kancelare:
ID_kanclu | umisteni
--------------------
12 | 1.patro
25/1 | 2.patro
25/2 | 2.patro
pracovnici:
prac | kancl
------------
10 | 12
10 | 25/1
33 | 25/1
34 | 25/2
dotaz, jimz vypisuji pocty pracovniku v jednotlivych kancelarich v urcitem patre:
select count(pracovnici.prac) as pocet, pracovnici.kancl from kancelare, pracovnici where pracovnici.kancl = kancelare.ID_kanclu and kancelare.umisteni = '2.patro'
-bohuzel tento vzorovy priklad funguje, kdezto presne analogicka aplikace nefunguje. O to vic to nechapu :-(
Sakra, vypadlo mi tam group by pracovnici.kancl. Sorry
Oboji je varchar? A neni nekde navic nejaka mezera?
dneska se to pise takto:
select count(pracovnici.prac) as pocet, pracovnici.kancl
from kancelare
join pracovnici on pracovnici.kancl = kancelare.ID_kanclu
where kancelare.umisteni = '2.patro'
ale nevypada to, ze by to nemelo fungovat... Typnul bych to na ty mezery.
zkus
update kancelare set id_kanclu = trim(id_kanclu)
update pracovnici set kancl = trim(kancl)
pak zkus znovu ten select. Pokud to nepomuze, zkusime patrat dal...
Marek: Tak chyba opet na me strane. Klasicky naprosty detail. V jednom spojovanem sloupecku bylo u kazde hodnoty navic \n. V phpadminu to videt nebylo a vsiml jsem si toho, az kdyz jsem prohlizel vyexportovanou databazi, kterou jsem chtel dat na testovaci web, kde bych Vam ji ukazal. Po odstraneni \n uz to slape bez problemu.
Velke problemy jsou vzdy zpusobeny malym detailem...
Kazdopadne diky za ochotu :-)
lama Nick :-\