Autor | Zpráva | ||
---|---|---|---|
musli Profil * |
#1 · Zasláno: 16. 7. 2007, 10:51:57
Dobré ráno,
už jsem tady jednou psal a pár lidí mě odkazovalo na serial na linuxsoftu, ten jsem si přečetl a zčásti se mi to povedlo to co jsem chtěl, ale přijde mi že to ani nejde, proto se tedy ještě jednou zeptám. V podstatě chci sloučit tyto dva:
přičemž po vyselektování kontroluju jestli v `tabulka2` není záznam, pokud není dělám něco a pokud je tak dělám něco jinýho: if(mysql_num_rows($result2) != 0) { $insert = ("INSERT INTO `tabulka2` (sloupec1, sloupec2, sloupec3) values ($result['zaznam1'], $result['zaznam2']", NOW())"); } else { práce s proměnnou $result2['zaznam3']; } vyjádřešní slovně: jde mi to že mám hlavní tabulku se záznami o uživateli, pak druhou. Člověk si může poslat každý den články. Kdžy si člověk pošle články, uloží se čas odeslání, jeho id a nějaký věci z první tabulky do druhé tabulky, když však odešle znovu zkontroluje jestli jsou v druhé tabulce záznam o dnešním odeslání (resp kontrola probíhá jako první), pokud ano tak hláška o tom že dnes si už poslal a když ne tak samozřejmě záznam se v píše |
||
Alphard Profil |
#2 · Zasláno: 16. 7. 2007, 11:15:52
moc mi nevěř, ale zkus tohle
$result = mysql_query ("select tabulka2.zaznam3 from tabulka1, tabulka2 where tabulka2.zaznam1 = tabulka1.zaznam1"); if (!$result) echo mysql_error(); |
||
bukaj Profil |
#3 · Zasláno: 16. 7. 2007, 11:16:57
tohle by se podle mě dalo řešit poddotazem:
$zaznamu = mysql_result(mysql_query("select count(*) from tabulka2 where zaznam1 in (select zaznam1 from tabulka1 where zaznam = '$bla')"), 0, 0); následně v podmínce můžeš zkoušet: if($zaznamu != 0){ ... |
||
tomask Profil |
#4 · Zasláno: 16. 7. 2007, 11:32:33
select tabula1.zaznam1, tabulka1.zaznam2, tabulka2.zaznam3 from tabulka1, tabulka2 where tabulka2.zaznam1=tabulka1.zaznam1
|
||
musli Profil * |
#5 · Zasláno: 16. 7. 2007, 12:10:29
Alphard
není možný co píšeš, ale děkuju tomask nepočítáš s proměnnou $bla bukaj zajímavý nápad, vůbec mě nenapadl. Bohužel nefunguje, zkouším něco podobnýho. Hlavně potřebuji i zaznam2, který ty neselektuješ |
||
Alphard Profil |
#6 · Zasláno: 16. 7. 2007, 12:32:41 · Upravil/a: Alphard
zapomněl jsem $bla
tomask máš tam překlep tabula1 |
||
bukaj Profil |
#7 · Zasláno: 16. 7. 2007, 12:51:25
musli
pokud je druhý result jenom kontrola, jestli se mají zapsat data z prvního resultu, tak to asi ani jinak, než jak jsi to řešil ty nepůjde. když jsem psal mé řešení nevšiml jsem si, že ještě v té podmínce využíváš data z prvního resultu. myslel jsem tudíž, že ty dva resulty jsou jen na testování, jestli se má něco udělat. |
||
tomask Profil |
#8 · Zasláno: 16. 7. 2007, 13:01:04
select tabula1.zaznam1, tabulka1.zaznam2, tabulka2.zaznam3 from tabulka1, tabulka2 where tabulka2.zaznam1=tabulka1.zaznam1 and tabulka1.zaznam='$bla'
|
||
Casero Profil |
#9 · Zasláno: 16. 7. 2007, 13:11:46
tomask
Rychlejší by mohlo být toto: select t1.zaznam1, t1.zaznam2, t2.zaznam3 from tabulka1 t1 join tabulka2 t2 on t2.zaznam1=t1.zaznam1 where t1.zaznam='$bla' |
||
musli Profil * |
#10 · Zasláno: 16. 7. 2007, 17:50:56
tomask
funguje, jen ještě malá chybička, aby si mohl udělat tabulka2.zaznam1=tabulka1.zaznam1 tak musíš zaznam1 z tabulky2 vytáhnout, a ještě závorky :-) takže: select tabula1.zaznam1, tabulka1.zaznam2, tabulka2.zaznam3 tabulka2.zaznam1 from tabulka1, tabulka2 where (tabulka2.zaznam1=tabulka1.zaznam1 and tabulka1.zaznam='$bla') Casero asi chceš udělat aliasy, to ti chybí "as" před t1 a t2 :-) ---------------------------------------- dělá mi to ještě nějaký chyby, ale teď nevím jestli to není někde chybou v kódu, jelikož se mi nedaří insertovat pokud je mysql_num_rows == 0, zkusím se na to ještě podívat, kdyžtam dám věděl a zeptám se:-) děkuju všem |
||
musli Profil * |
#11 · Zasláno: 16. 7. 2007, 18:20:32
už vím tedy v čem je problém:
používám tedy toto:
takže když najde záznam tak je v pořádku, ale pokud nenajde záznam tak nezůstanou proměnný $zaznam1 a $zaznam2. Abych to lépe vysvětlil tak vlastně potřebuju zkontrolovat, pokud však záznam není, tak potřebuju aby právě byli definový proměnný z první tabulky. |
||
Casero Profil |
#12 · Zasláno: 16. 7. 2007, 23:01:29
musli
asi chceš udělat aliasy, to ti chybí "as" před t1 a t2 :-) "as" se může vynechat ;) A jak jsem psal, přes join je to rychlejší, jelikož nedochází ke kartézskému součinu záznamů tabulek, z kterých se následně podmínkou where vybírá výsledek. |
||
Stoptusin Profil * |
#13 · Zasláno: 17. 7. 2007, 09:50:57
Casero
dobře, omlouvám se, všechny články co jsem četl, tak to nezmiňovali:-) ale problém to neřeší, protože, i když to nenajde schodu v tabulkách, tak nic nevyselektouje. Potřebuju aby se vyselektovali záznamy z první tabulky a druhý, když mají shodný záznam, pokud ve druhé není nic (takže nedojde ke spojení tabulek), tak vyselektovat první tabulku. Tohle asi jedním dotazem nebude (jak říkal bukaj), nebo jestli se dá použít samotná podmínka v dotazu? |
||
Casero Profil |
#14 · Zasláno: 17. 7. 2007, 15:34:59
Stoptusin
left join? |
||
Časová prodleva: 18 let
|
0