Autor | Zpráva | ||
---|---|---|---|
T-fon Profil |
#1 · Zasláno: 17. 2. 2019, 09:51:10
Ahoj, poradíte prosím jak zjednodušit tento dotaz? Vymyslel jsem tuhle funkční obludnost, ale předpokládám, že se tabulka variable_list_values nemusí připojovat x-krát. Je v ní sloupec id_list, kde je třeba číslo 92 desetkrát a vedle sloupce id, kde je deset různých hodnot a za číslo 93 desetkrát atd atd. Snad je to pochopitelný. Databáze je pevně daná, strukturu měnit nelze.
SELECT nabidka.*, vlv1 .` lang - czech ` as dispozice, vlv2 .` lang - czech ` as vlastnictvi, vlv3 .` lang - czech ` as objekt FROM nabidka left join variables_list_values vlv1 ON vlv1.value = nabidka.nemovitost_dispozice AND vlv1.id_list = 92 left join variables_list_values vlv2 ON vlv2.value = nabidka.nemovitost_vlastnictvi AND vlv2.id_list = 94 left join variables_list_values vlv3 ON vlv3.value = nabidka.nemovitost_druh_objektu AND vlv3.id_list = 31 WHERE nabidka.id = ? |
||
Keeehi Profil |
#2 · Zasláno: 17. 2. 2019, 09:59:14
Třikrát se připojovat musí, protože k jednomu řádku chceš připojit jiné tři hodnoty podle třech různých sloupců. Nevidím nic, co by se dalo optimalizovat.
|
||
T-fon Profil |
#3 · Zasláno: 17. 2. 2019, 10:04:17
Aha. A teď jsem si teprv všim, že je tam ještě nějaká spojovací tabulka, kde mj. v jednom sloupci jsou hodnoty nemovitost_dispozice, nemovitost_vlastnictvi,... (což odpovídá hodnotám v tabulce nabidka) a ve druhém 92,94,..., což odpovídá hodnotám v tabulce variable_list_values. Toho by se nějak využít nedalo?
|
||
Kajman Profil |
#4 · Zasláno: 18. 2. 2019, 07:34:33
Propojování dat z více tabulek je možné i v aplikaci, jen to je potřeba dobře neprogramovat, aby se nedělalo zbytečně moc dotazů.
Srovnání dotazů do závislých tabulek Snížení počtu dotazů v ORM Ale osobně bych to řešil, až bych narazil na limit počtu joinů v jednom dotaze. A dávat do názvu sloupců mezery a mínuska mi přijde jako špatný nápad. |
||
T-fon Profil |
#5 · Zasláno: 18. 2. 2019, 20:33:42
Díky oběma za rady, nechám to tak.
Jinak koukám že mezery tam nejsou, to se stalo asi při formátování... |
||
Časová prodleva: 6 let
|
0