Změna pořadí položek v ms msql   zodpovězená otázka

VB.NET, SQL, Databáze

Dobrý den,

mám na Vás prosbu. Mám v sql tabulku "menu" kde je sloupec "poradi", v asp mám jednoduchou administraci a potrebuji jednoduse menit poradi polozek v administraci aby pri vypisu bylo podle meho nastaveni. Lze toto resit primo v SQL nebo musim v asp udelat precislovani cele tabulky pokud dojde ke zmene poradi? Myslim tim

Menu1 je na poradi 1

Menu2 je na poradi 2

A potrebuji Menu 2 dostat na poradi 1.

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přidejte si do databáze sloupeček "pořadí" a když budete data vytahovat, tak je třiďte podle tohoto sloupce... V databázi je to - pokud se nemýlím- seřazené prostě tak jak to tam přišlo, tedy podle primárního klíče.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obvykle ano - pokud je primární klíč i clusterovaným indexem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jednoduše si předejte sloupec identifikující pořadí a podle něj to při zobrazení řaďte. SQL Server vám jinak nezaručí pořadí v jakém se data zobrazí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji moc za odpovědi nic méně jsme asi špatně popsal problem.

Mám tabulku kde sloupec poradi jiz je. Pri zadani noveho radku do SQL se zjisti posledni nejvyssi cislo a pricte se 1, to vše funguje. Ale nastava mě problem pokud chci již vytvořenou položku přesunout v poradi a nebo pokud chci zadat novou položku ale na poradi ktere již je obsazeno jinou. pak mam v poradi duplicity a nefungujeto.

Např tab.:

NAZEV | PORADI |

------------------

Menu1 | 1 |

Menu2 | 2 |

Menu3 | 3 |

Menu4 | 4 |

Tak a tet zapijuji Menu5 a potřebuji ho dat na poradi 1, pak me tabulka vypada:

NAZEV | PORADI |

------------------

Menu1 | 1 |

Menu2 | 2 |

Menu3 | 3 |

Menu4 | 4 |

Menu5 | 1 |

a já potřebuji:

NAZEV | PORADI |

------------------

Menu1 | 5 |

Menu2 | 2 |

Menu3 | 3 |

Menu4 | 4 |

Menu5 | 1 |

To same treba u editace položek.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je tedy potřeba data přečíslovat. Víceméně je to banalita.

Všechny přečíslování vždy uzavírat do transakce kvůli konzistentnosti dat.

A následně jednotlivé úkony:

Při vkládání položek:

1) Najít číslo pořadí před které vložit.

2) Posunout stávající položky dopředu // UPDATE Poradi=Poradi+1 FROM ... WHERE Poradi >= @poradiNovePolozky

3) Vložit novou položku s novým pořadím

Při mazání položek:

1) Najít číslo pořadí které chceme mazat.

2) Smazat tuto položku

3) Posunout stávající položky zpět // UPDATE Poradi=Poradi-1 FROM ... WHERE Poradi > @poradiMazanePolozky

Při přehazování položek mezi sebou:

To snad ani nemá smysl postup rozebírat - přehodíte číslat pořadí obou položek.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

OK diky slo mi oto jestli to nejde v SQL vse nejakym prikazem

ale diky moc ...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback