Autor | Zpráva | ||
---|---|---|---|
krteczek Profil |
#1 · Zasláno: 21. 3. 2005, 16:42:33
zdravím a prosím o pomoc:
potřebuji v tabulce která má sloupce id, jmeno, prijmeni a další(pro tohle hledání nedůležité), zjistit, jestli se na některém řádku objevuje kombinace jmena a prijmení , a pokud ano, muže to byt jen na řadku n mám takovou funkci:
tuhle používám na zjištění jestli se ta kombinace jmena a příjmení v tabulce objevila a funguje, potřebuji jinou funkci která bude mít ještě jeden vstupní udaj nějak takhle: function jmenovdbjinde ($jmeno,$prijmeni,$radek_v_db) s tím, že kombinace jmena a přijmení se muže objevit jen na tom řadku ktery je poslan b proměnne $radek_v_db už se stím trápím asi 3 hodiny a stále mi to nejede jak má :-( díky krteczek |
||
krteczek Profil |
#2 · Zasláno: 22. 3. 2005, 12:44:04
no tak jsem na to nakonec přišel, verzí bylo několik, velikostí od popsané stránky a5 až nakonec jen mírně modifikovaný dotaz na db uvedený výše :-)
takže potřebuji z db dostat jestli se v ní vyskytuje osoba s jménem $jmeno,prijmením $prijmeni, a pokud ano,tak musí nacházet jinde než na řádku $radek_v_db tady je kód té funkce:
funkce se volá :
takže celé to funguje takhle: opravuji vdatabázi udaje na řádku $radek a potrebuji ověřit před uložením jestli jsem náhodou nezměnil jméno apříjmení na jiné už v databázi existující, proto septám databáze jestli je v db osoba s těmito inicialy, ale jinde než na řadku $radek pokud osoba v db není,nebo je a je na řadku $radek, vrátí nám funkce false ( což je v pořádku, to potřebuji ),jinak mi vráti true, což je špatně a já tedy znovu ukazuji formulář na opravu dat... snad jsem to vysvětlil dostatečně pochopitelně aspoň u odpovědi, když zadání nebylo nic moc :(, tímto se omlouvám všem co chtěli pomoct, ale nepochopili zadání, protože bylo špatně položeno. Příště se budu snažit vyložit muj problém srozumitelněji. díky všem krteczek |
||
23k Profil |
#3 · Zasláno: 22. 3. 2005, 13:37:28
Strasny funkce, se nedivim, ze Ti nikdo neporadi. Vic slozitejc to resit nemuzes? Aneb co je slozitejsi tim jsem lepsi???
Btw proc se podepisujes, kopirujes LEA? |
||
krteczek Profil |
#4 · Zasláno: 23. 3. 2005, 14:44:34
23k: 1) v čem je ta funkce tak šíleně složitá?? Myslím, že je to lepší než psát do kodu několikrát to samé, ale asi se pletu, podle toho co píšeš. máš lepší a jednodužší řešení? Sem s ním, já se rád poučím, a myslím, že každý kdo to čte.
2)podepisuji se proto že je to můj zvyk, nikoho nenapodobuji, když se koukneš ke mne na web tak všechny mé odpovědi jsou podepsané ( pokud náhodou některá ne, tak jen potvrzuje pravidlo... :-) krteczek PS: k odpovědi jsem se dostal až dnes, protože errortel měl nějaké problémy na základnových stanicích s gprs ( Karviná, Č.Těšín )... |
||
Lemur Profil * |
#5 · Zasláno: 23. 3. 2005, 15:04:42
Ohledně hledání počtu pomocí "select * from ..." a zjištění počtu vrácených řádek:
Je to neoptimální řešení, protože donutí databázi udělat dotaz, který se nakonec zahodí. Mnohel lepší je použí count() - třeba "select count(*) as pocet from ... ", vrátí se jediný řádek s polem "pocet" a to je počet řádek. A pro databázi je count() mnohem méně náročný než obyčejný select, hlavně pokud jsou pole, pomocí ktrých se tvoří podmínka, indexovaná. |
||
krteczek Profil |
#6 · Zasláno: 23. 3. 2005, 15:24:32
Lemur: díky, to znamená že ten dotaz by měl být nějak takhle?:
|
||
Lemur Profil * |
#7 · Zasláno: 23. 3. 2005, 19:23:40
Ne - to by vrátilo vždycky TRUE, správne je to takhle:
Hlavní je: nedělat požadavky, který vrací data, pokud je třeba jen počet. |
||
krteczek Profil |
#8 · Zasláno: 24. 3. 2005, 03:08:10
Jé super :-) tak už to zase funguje ( podle tvého příkladu ) .
Vím tedy, že je dobré tahat jen informace o datech, pokud nepotřebuji data, a ty jsi mi ukázal jak na to, ale ještě jeden dotaz: to moje řešení je náročné i tehdy, když je očekáván návrat žádného, nebo jen jednoho řádku??? díky za pomoc a osvětu krteczek |
||
Lemur Profil * |
#9 · Zasláno: 24. 3. 2005, 11:02:38
to moje řešení je náročné i tehdy, když je očekáván návrat žádného, nebo jen jednoho řádku???
Ano, i když v případě žádného řádku by to neměl být velký rozdíl. Ale pokud je to jeden a více řádků, tak se musí zbytečně číst z disku a přenášet data, která se stejně zahodí. |
||
krteczek Profil |
#10 · Zasláno: 24. 3. 2005, 11:28:16
Lemur: díky za vysvětlení, krteczek
|
||
Časová prodleva: 20 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0