Autor | Zpráva | ||
---|---|---|---|
Prkny Profil |
#1 · Zasláno: 3. 9. 2019, 21:18:30
Dobrý den,
prosím o radu či nápad. Mám tabulku volby, zjednodušeně vypadá takto: id, kod, volba např. 1,'df34', 'L' 2,'df34', 'S' 3,'df34', 'XL' 4,'df34', 'M' 5, 'sm45', '40' 6, 'sm45', '41' 7, 'sm45', '37' 8, 'am78', 'modrá' 9, 'am78', 'červená' .... Jedná se o načtení dat do SELECTu. U většiny voleb mi stačí příkaz: SELECT * FROM `volby` WHERE kod='sm45' ORDER by volba , kdy je seřazení 37,40,41.
Rád bych ale vyřešil i konfekční velikosti, protože výše uvedený dotaz u kódu df34 se seřadí: L, M, S, XL, místo logičtějšího S, M, L, XL. Napadla mě nějaká externí tabulka do které bych zadal prioritu pro XS,S,M,L,XL,XXL. Ale vůbec nevím zda je to vůbec reálné, jak to propojit a zda to jde udělat tak, aby to neovlivňovalo jiné volby. Děkuji za radu. |
||
Kajman Profil |
#2 · Zasláno: 3. 9. 2019, 23:53:44
Do tabulky si přidejte nepovinný parametr poradi a řaďte nejprve podle něj a až potom podle volba.
|
||
RastyAmateur Profil |
#3 · Zasláno: 4. 9. 2019, 08:16:41
Já osobně bych asi použil
FIELD() nebo nějakou podobnou variantu. Pokud bude produkty zadávat uživatel, asi bych ho nechtěl nutit zadávat i nějaké pořadí. Problém je, že až kromě velikosti a barev přidáš i něco jiného, budeš muset upravit ten dotaz. Pokud produkty budeš přidávat ty, klidně bych použil Kajmanovo řešení.
|
||
Prkny Profil |
#4 · Zasláno: 4. 9. 2019, 08:46:33
Přidat nepovinný parametr pořadí by bylo poměrně komplikované, ty volby se mi natahují automaticky cca z 15 importů XML z externích zdrojů.
RastyAmateur díky, to bude nejspíše ono: SELECT * FROM `volby` WHERE kod='df34' ORDER by FIND_IN_SET (volba, 'S,M,L,XL'),volba |
||
N71 Profil * |
#5 · Zasláno: 4. 9. 2019, 15:40:12
Prkny:
Měj na paměti, že na seřazení podle výsledku výpočtu nepoužije databáze žádný index. Na větší dataset to není vhodný způsob. |
||
Kajman Profil |
#6 · Zasláno: 4. 9. 2019, 20:20:22
Prkny:
„Přidat nepovinný parametr pořadí by bylo poměrně komplikované, ty volby se mi natahují automaticky cca z 15 importů XML z externích zdrojů.“ A v těch XML je definice těch číselníků ve správném pořadí? Pak by se mohlo i to pořadí do nepovinného sloupečku přidávat automaticky. Ale pokud si to chcete určovat ručně, můžete použít tu tabulku navíc. |
||
Časová prodleva: 6 dní
|
|||
Prkny Profil |
#7 · Zasláno: 10. 9. 2019, 08:57:47
N71:
Ty volby se filtrují hlavně podle kódu, zbývá seřadit cca. do max 10 položek, takže to by asi problém být nemusel. Kajman: U jednoho je definice ve správném pořadí u druhého není... je to bohužel půl na půl.. :( |
||
Kajman Profil |
Tak si můžete v konfiguraci importů nastavit, kde se u číselníků má zaznamenat pořadí z xml a kde ne. Tam kde se nezaznamená, si ho můžete určit ručně v té externí tabulce. Případně to řadit podle hodnoty, pokud nebude pořadí ani v externí tabulce ani v číselníku.
Stejně přeci musíte mít někde uložen ten string 'S,M,L,XL' a nezapomenout ho upravit, když přibude XS, XXL, XXXL nebo 4XL. SELECT v.* FROM `volby` v LEFT JOIN `volby_rucni_poradi` rp ON v.kod = rp.kod AND v.volba = rp.volba WHERE v.kod = 'df34' ORDER BY rp.poradi, v.poradi, v.volba |
||
Prkny Profil |
#9 · Zasláno: 10. 9. 2019, 10:02:22
Kajman:
Zde se ale bohužel předpokládá, že ke každé položce se vytvoří pořadí (v.kod = rp.kod). To je věc, které jsem se chtěl původně zcela vyhnout. Pokud by se to pořadí ke každé položce dělalo ručně, byla by pro nás praktičtější ta první varianta, o které jsme věděli a kterou jste navrhoval (Do tabulky si přidejte nepovinný parametr poradi a řaďte nejprve podle něj a až potom podle volba.), protože se z těch 15 XML nezpracovávají úplně všechna data ... Aktuálně máme nasazeno třídění podle FIND_IN_SET i když je to taková nouzovka pro 40% podíl položek (lepší než drátem do oka). Chtěl jsem to tady zkusit, zda někoho něco nenapadne v podobně nějakých šablon s PHP polem, nebo tak něco ... Obávám se, že pokud to budeme chtít vyřešit na 100%, nepovinnému sloupci poradi a ručnímu nastavení u každé položky zvlášť se nevyhneme.... Děkuji za snahu. |
||
Kajman Profil |
#10 · Zasláno: 11. 9. 2019, 07:59:36
Prkny:
„že ke každé položce se vytvoří pořadí“ Ne, stačí to vytvořit jen pro položky, které je potřeba ručně přeskládat, protože pořadí v xml souboru je jinak, než žádáte. |
||
Prkny Profil |
#11 · Zasláno: 12. 9. 2019, 20:22:43
Kajman:
Rozumím. Ještě jednou díky. |
||
Časová prodleva: 5 let
|
0