Autor | Zpráva | ||
---|---|---|---|
Marecek_1 Profil * |
#1 · Zasláno: 13. 10. 2011, 13:07:07
Ahoj, řeším zda je možné porovnávat buňku ve které je více údajů.
Do teď jsem používal následující SQL $mesto=array(praha,brno,ostrava); $dotaz=mysql_query("SELECT * FROM tabulka WHERE mesto IN ('" . implode("', '", $mesto) . "')"); Ale nyní nastala situaci, kdy do DB zapisuju řádky, které jsou totožné, mají pouze jinou buňku ID(auto) a buňku město. Je to asi 5% všech řádků. Co je lepší, nechat zapsat tento témeř totožný záznam a při výpisu dat z DB nějak odstranit duplicitu nebo upravit zapis tak, aby se nepřidal celý nový řádek, ale upravit stávající respektive buňku město, kde nebude jako do teď např. praha, ale praha;ostrava;plzen Osobně se mi více líbí ta druhá varianta, ale nevím jak složit SQL dotaz. Jelikož by se vlastně porovnavala dvě pole. A take zda to nema fatální dopad na rychlost zpracování. Moc děkuji za poznatky |
||
Kajman_ Profil * |
#2 · Zasláno: 13. 10. 2011, 13:14:50
Jsou to stejná auta nebo jiná? Pokud jsou jiná a jen mají stejné parametry, tak není problém vypsat oboje.
Pokud je to jedno auto s více parametry, je řešením další tabulka, kde budou města přirazena k této tabulce id_z_prvni_tabulky, id_mesta A ta tři města budou na třech řádcích. |
||
Knight Profil |
#3 · Zasláno: 13. 10. 2011, 13:20:01
Řekl bych, že ta zmínka o autu "...ID(auto)..." vyjadřuje spíše auto_increment. Chtělo by to více rozepsat, o co vlastně jde.
|
||
Marecek_1 Profil * |
#4 · Zasláno: 13. 10. 2011, 15:00:22
Omlouvám se, ano u ID se jednalo o auto_increment, proto je také pokaždé jiné hodnoty.
V tabulce je několik buněk např.: ID(auto_increment) | barva | styl | tvar | mesto | velikost | aj. Na základě záhlaví tam vznikne např. řádek: 10 | červená | tučný | kruh | praha | 36B | A nyní vznikne další řádek, který bude vypadat takto: 25 | červená | tučný | kruh | brno | 36B | Jediné, co se liší je ID, to je pochopitelné...auto_increment a bunka mesto, kde není nyní praha, ale brno A ted řeším, jak to zapsat, zda jako nový řádek a pak to nějak filtrovat nebo jen upravit bunku město na praha;brno ID k ničemu nepotřebuji. Při výpisu ale nutně potřebuji používat výběr z více měst, do teď, když bylo maximalně jedno město v buňce, jsem používal tento dotaz: $mesto=array(praha,brno,ostrava); $dotaz=mysql_query("SELECT * FROM tabulka WHERE mesto IN ('" . implode("', '", $mesto) . "')"); Takže mi to vypsalo všechny řádky z měst praha,brno,ostrava Pokud ale použiju zápis, kdy v buňce město bude praha;brno nevím, jak poskládat SQL dotaz. DÍKY |
||
Marecek_1 Profil * |
#5 · Zasláno: 13. 10. 2011, 17:25:44
Nebo se bunkou mesto odkazovat na jinou tabulku?
|
||
Knight Profil |
#6 · Zasláno: 13. 10. 2011, 18:10:41
Udělal bych druhou tabulku, ve které by bylo ID, název města a ID řádku z vaší původní tabulky. Selecty by pak vypadaly např. takhle:
SELECT * FROM `puvodni_tabulka` WHERE `id` IN (SELECT `id_z_pudovni_tabulky` FROM `nova_tabulka` WHERE `mesto` IN ('" . implode("', '", $mesto) . "')) Pamatujte také na index, který by měl být na názvu města, když jej dotazujete. |
||
Časová prodleva: 13 let
|
0