Kvalitní hosting pro WordPress [WP3]
Zobrazují se odpovědi 1 až 12 z 12

Mysql, výpis jiz smazanych id

  1. mám dotaz, mám v dtb např. 1000 záznamů od id 1 až po 1000
    některé záznamy a to náhodně však musím občas smazat.
    Potřeboval bych tyto smazané id však pomocí dotazu do dtb vypsat jelikož je na nich vázán další
    potřebný krok.
    Děkuji
    P.
    je to php mysql

  2. Co se právě děje na Webtrhu?
  3. Tak je nemaž natvrdo, ale nastavením sloupce, například SET active = 0
    Eventuálně přidej i datum smazání.

  4. Citace Původně odeslal Martin Schlemmer Zobrazit příspěvek
    Tak je nemaž natvrdo, ale nastavením sloupce, například SET active = 0
    Eventuálně přidej i datum smazání.
    To mohu takto udělat do budoucna ale i přez to bych potřeboval vypsat tyto id tak jak jsem popsal , jde o to že dtb je používaná a ty odmazané jsou nyní nenávratně pryč , nemohu teď ani ty id nechat seřadit.

  5. Chápu to tam, že PHP už je krok navíc a musí to být jen na úrovni dtb?

  6. Citace Původně odeslal musil.david Zobrazit příspěvek
    Chápu to tam, že PHP už je krok navíc a musí to být jen na úrovni dtb?
    na ty neexistujici id je vždy navázán fyzicky na disku soubor.
    takže např id 957 má unikátní cestu do adresáře a podadresáře k souboru a já je nyní chci odebrat (ty soubory) a pročistit disk.
    bavíme se však o cca 300.000++ idéčkách :o(

  7. Citace Původně odeslal lahwin Zobrazit příspěvek
    To mohu takto udělat do budoucna ale i přez to bych potřeboval vypsat tyto id tak jak jsem popsal , jde o to že dtb je používaná a ty odmazané jsou nyní nenávratně pryč , nemohu teď ani ty id nechat seřadit.
    Tak bych si udělal jednorázový script, který by mi tu DB prošel jedno ID za druhý a pokud by neexistovalo, vytvořil by v DB "smazaný záznam" a smazal soubor na disku.

  8. Citace Původně odeslal Martin Kejzlar Zobrazit příspěvek
    Tak bych si udělal jednorázový script, který by mi tu DB prošel jedno ID za druhý a pokud by neexistovalo, vytvořil by v DB "smazaný záznam" a smazal soubor na disku.
    a napadá Vás jak by měl vypadat dotaz do dtb?

  9. Citace Původně odeslal lahwin Zobrazit příspěvek
    a napadá Vás jak by měl vypadat dotaz do dtb?
    PHP kód:
    for($i 1$i <= 300000$i++){

    db("SELECT COUNT(id) FROM xx WHERE id = '".$i."'");

    if(
    $rowcount == 0){

     
    doSomething();

    }


    edit: chyběl sloupec

  10. Chybajuce IDcka, resp. sekvencne medzery medzi ID najdes napriklad takto:
    http://sqlfiddle.com/#!9/d80c6a/1
    Vypise ti to, kde zacina medzera a kde konci.

    Pre testovaciu tabulku:
    Kód:
    (1, 'test1'),
    (3, 'test3'),
    (10, 'test10'),
    (11, 'test11');
    To vyjde takto:
    Kód:
    gap_starts_at	gap_ends_at
    2	2
    4	9
    https://stackoverflow.com/questions/...ids-from-table

  11. Toto by mohlo jít řešit i přes trigger, který do jiné tabulky zapíše id, které se smazali.

  12. Super.!

    moc děkuji všem za odpovědi :o)

    PS: hezké svátky
    P.

  13. Verze s 300000 dotazy do databáze:
    Citace Původně odeslal Tomve Zobrazit příspěvek
    PHP kód:
    for($i 1$i <= 300000$i++){
    db("SELECT COUNT(id) FROM xx WHERE id = '".$i."'");
    if(
    $rowcount == 0){
     
    doSomething();
    }

    Verze s 1 dotazem do databáze:
    PHP kód:
    $link mysqli_connect(...);
    $query mysqli_query($link'SELECT id FROM tabulka ORDER BY id');
    for (
    $i 1$row $query->fetch_row(); $i++) {
        for (
    $j $i$j $row[0]; $j++) {
            echo 
    "$j\n"//něco udělám se smazaným záznamem s id == $j
        
    }
        
    $i $row[0];

    Řešení, které jedním dotazem vypíše id-čka chybějící v postupné sekvenci:
    How do I find a "gap" in running counter with SQL? - Stack Overflow

    Řešení s triggerem, který id-čko zapíše do jiné tabulky, je na úrovni databáze a osobně mi přijde elegantní.
    Naposledy upravil crs : 25.12.2018 v 20:08

Hostujeme u Server powered by TELE3