Nábor publisherov do affiliate siete - záujem o reklamné pozície
Zobrazují se odpovědi 1 až 16 z 16

řazení dat cik cak

  1. mnosavcov Hodnocení: 1 (100%) mnosavcov je zatím velká neznámá
    1
    Ahoj
    mám zvláštní dotaz, je možné nějak jednoduše aplikovat řazení dat z DB tak že mám ve sloupci záznamy jedničky a nuly, klasicky ho řadím order by sloupek asc a dostanu výsledek 00000111111, potřeboval bych něco jako order by sloupek cikcak abych dostal výsledek 010101010101

    potřebuju mít podle tohohle sloupečku rozházený výsledky
    Díky za pomoc
    M

  2. Co se právě děje na Webtrhu?
  3. Twista Hodnocení: 1 (100%) Twista je na dobré cestě
    2
    teda uprimne moc nechapu jak to myslis, jestli chces data jen tak rozhazet tak muzes pouzit ORDER BY RAND()

  4. naniccz Hodnocení: 2 (100%) naniccz je na dobré cestě
    3
    Nelze, protože řazení znamená uspořádání množiny tak, ze prvky jsou v relaci "menší než", která je tranzitivní, reflexivní a asymetrická. To ta tebou popsaná není. Budeš to muset udělat programově.

  5. Čeho konkrétně chcete docílit?

  6. nejlepsi by bylo kdybys mluvil konkretne, je totiz mozne, ze ti dokazeme navrhnout lepsi reseni... na tohle konkretne me napada jen predradit si to v php a takto razeny index si v podstate preulozit do vedlejsi tabulky a vybirat joinem ... problem ej ze se to musi znovu radit pri kazde zmene, to muze byt dost narocne :)

  7. honzikec Hodnocení: -1 (33%) honzikec je na dobré cestě
    6
    napadá mě jen hodit si do proměnný počet těch řádků v tabulce a pak to jakoby vybírat po jednom (jakože jednu query WHERE cislo = '1', druhou WHERE cislo = '2') a opakovat to (počtem řádků / dvěma) a nastavovat postupně offset (jakože na začátku foreach $num = 1; a na konci $num++; a offset = $num ... ale možná mluvim z cesty, ani nevím, jestli je to takto realizovatelné...jestli je to blbost, tak mě někdo okřikněte :)

  8. No pokud dobře chápu, co si představuješ, tak mě napadlo toto řešení pomocí php:
    PHP kód:


      $pdo 
    = new PDOConfig();  
      
    $select $pdo -> prepare("SELECT ID FROM table WHERE NUMBER=0"); 
      
    $select -> execute();
      
    $count $select -> rowCount();

      
    $pdo2 = new PDOConfig();  
      
    $select2 $pdo2 -> prepare("SELECT ID FROM table WHERE NUMBER=1"); 
      
    $select2 -> execute();
      
    $count2 $select2 -> rowCount();
      
      if(
    $count>$count2){
         
    $max $count;
      }
      else{
         
    $max $count2;
      }
      
      for(
    $i 1$i <= $max$i++){
        
    $result $select->fetch(PDO::FETCH_OBJ);
        
    $result2 $select2->fetch(PDO::FETCH_OBJ); 
        echo 
    $result -> ID;
        echo 
    $result2 -> ID;
      } 
    nezkoušel jsem, třeba to tak nepude a nevim jestli to neni prasečina:-D, ale když už mě to napadlo :-D

  9. mytrix Hodnocení: 10 (100%) mytrix is a jewel in the rough mytrix is a jewel in the rough mytrix is a jewel in the rough
    8
    to je zbytecne prekombinovane. Pokud to uz bude resit mimo db, tak mu staci jeden dotaz bez ohledu na sloupec number a nasledne provest razeni rucne, usetri tak jeden dotaz

  10. mnosavcov Hodnocení: 1 (100%) mnosavcov je zatím velká neznámá
    9
    rand právě použít nemůžu, protože i když je to přeházený, tak to není náhodné

    ---------- Příspěvek doplněn 11.08.2011 v 00:09 ----------

    Citace Původně odeslal naniccz Zobrazit příspěvek
    Nelze, protože řazení znamená uspořádání množiny tak, ze prvky jsou v relaci "menší než", která je tranzitivní, reflexivní a asymetrická. To ta tebou popsaná není. Budeš to muset udělat programově.
    no napsal jsem řazení, ale myslel jsem uspořádání podle určitých pravidel

    ---------- Příspěvek doplněn 11.08.2011 v 00:11 ----------

    děkuju za nápady, doufal jsem že existuje nějaká vychytávka která to udělá, ale už do začátku jsem o tom dost pochyboval :-)

  11. Podle mého názoru je řešení se dvěma oddělenými dotazy elegantnější.
    Naopak, si myslím, že řadit v paměti neseřazený výpis znamená zbytečné zatížení paměti, CPU a extra kód (který si nota bene neporadí se stránkováním, pokud tam má být) a navíc s prospektem zavlečení chyb v něm. Taktéž to znamená extra čas pro vykonání řazení ve skriptu, které by místo toho mohlo/mělo být přeneseno na databázový engine (který je na to optimalizován).

  12. duben Hodnocení: 49 (100%) duben is just really nice duben is just really nice duben is just really nice duben is just really nice duben is just really nice
    11
    Citace Původně odeslal mnosavcov Zobrazit příspěvek
    no napsal jsem řazení, ale myslel jsem uspořádání podle určitých pravidel
    To je opravdu vtipné, když chceš radu, nepopíšeš problém, resp popíšeš ho na nečem jiném a když ti tu lidi radí jak to udělat cikcak, tak se dozví, že to je uspořádané podle pravidel, které jsi ale nespecifikoval.

    Jasně definuj co chceš, na spoustu věcí je vychytávka. Ale to jak se ptáš je stylem "Chci tříkolku ... hmm jdi do obchodu pro tříkolky ... nojo ale možná by měla mít 4 kola ... to není tříkolka ... no ale hlavně aby to plavalo na vodě při rybaření, myslel jsem že na takové tříkolky jsou speciální obchody".

  13. pro: duben
    to že si dotaz nepochopil je jistě dobrá záminka psát vtipné poznámky ;-)
    ostatní kteří dotaz pochopili a znali odpověď už k tomu své názory napsali
    děkuji ti za důležitý příspěvek :)

  14. Místo, abyste Standu urážel, by vás jeho příspěvek mohl nakopnout k tomu, že správné zadání problému je velmi důležité, a vy jste ho podcenil.
    Příště svůj dotaz formulujte přesněji. Uvidíte, že to pomůže i vám, nejen těm, kdo tráví svůj čas tím, že vám chtějí pomoct.

  15. jo omlouvám se Staníkovi :)

    ---------- Příspěvek doplněn 05.11.2011 v 12:14 ----------

    je fakt obdivuhodný že si dělá starosti s mým problémem :) ale když se mu můj dotaz nezdá tak ať napíše že mu to mám popsat líp, nebo ať neodpovídá, k tomu aby mi pomáhal ho nenutím.

    ---------- Příspěvek doplněn 05.11.2011 v 12:32 ----------

    všimněte si že na Vaši otázku "Čeho konkrétně chcete docílit?" jsem nijak neobvykle nereagoval, protože jste podal konstruktivní dotaz a já si uvědomil že mé zadání bylo dost odbyté. Nevím proč je potřeba aby nějakej "borec" Standa na druhý vyskakoval, on taky neví co umím, nebo neumím a nemusí si nic dokazovat, tím spíš je smutné že někdo kdo toho ví podle Vašeho názoru dost, si vyskakuje na někoho o kom si může myslet že nic neumí, tím rozhodně neukazuje svojí sílu, ale to jakej je trouba, i když s hromadou znalostí

    a jestli je opravdu takovej borec tak ať mi napíše řešení.

    mám tabulku se dvěma sloupci.
    v jednom sloupci je název města, ve druhém sloupci je jméno obyvatele
    chci vypsat seznam všech obyvatel ze všech měst
    mám zadaná města, praha, brno, ostrava
    ve městě praha bydlí agáta, bedřich, cecílie
    v brně bydlí david, emil, franta, gustav, harold
    v ostravě ivan, jindřich

    jména budou řazeny dle abecedy
    jenže chci aby se nejdřív řadily podle měst a to tak, že města se budou pravidelně střídat

    výsledek tedy bude
    brno ... david
    praha ... agáta
    ostrava ... ivan
    brno ... emil
    praha ... bedřich
    ostrava ... jindřich
    brno ... franta
    praha... cecílie
    brno ... gustav
    brno ... harold

    vtip je v tom že nechci použít jiný kód než výsledek SQL, nejlépe jediný dotaz
    otázku jsem dal protože jsem zjišťoval jestli neexistuje nějaké jednoduché řešení, další příklad berte s velikou rezervou (to znamená že nepotřebuje vtipné narážky je to JENOM jako)

    select mesto, jmeno from tabulka order by mesto stridave asc, jmeno asc

    !!! jakákoli informace o tom, že to jde rozdělit do více dotazů, použít kód který si dále s výsledkem pohraje a výstup bude podle požadavku nepotřebuji, protože s tím si dokážu poradit, primárně hledám řešení které je jednoduché jako výše uvedený příklad, můj dotaz je jde to tak jak jsem to nastřelil? možné odpovědi ANO/NE

    Snad už to pochopí i ti vtipnější z přispěvovatelů

    děkuji

  16. duben Hodnocení: 49 (100%) duben is just really nice duben is just really nice duben is just really nice duben is just really nice duben is just really nice
    15
    mnosavcov
    Míň machrování a víc sebereflexe, když po někom něco chceš a neumíš se ani správně zeptat by neškodilo. Nemělo cenu abych psal jinou než veselou poznámku, protože ostatní předemnou ti už jasně napsali, že zadání bylo nedostatečné. Po tom co jsi tu rozepsal, je jasné, že jsi ve skutečnosti chtěl něco naprosto jiného než vyplývalo z tvého první dotazu. Nehledě na to, že zadání jsi napsal špatně (ostrava je abecedně před prahou) a že si mě jízlivě dobíráš a čekáš zdarma radu na ne zrovna triviální otázku, ti jako "trouba s hromadou znalostí" pomůžu. Nezadal jsi v rámci své euforii o tom jak jsem "vtipný a machruju" nad jakou databází má SQL kód běžet. Tohle jde řešit pomocí rozšiřujících SQL funkcí, které má každý sql interpret (MySQL, SQL, PSQL) jiné. V řešení tedy vycházím z toho, že používáš mezi webtržníky nejběžnější MySQL.

    1) triviální řešení neexistuje, protože cikcak řazení neodpovídá logice množinovému zpracování dat (případný tip ke studiu, relace a množinové operace)
    2) nevím proč to takhle potřebuješ, ale řešení v kódu je většinou praktičtější
    3) vhodné řešení na úrovni databáze je pomocí triggerů, při ukládání dat na INSERT TRIGGERU
    4) funkční řešení existuje a je popsáno níže

    Aby ses mohl ty nebo kdokoliv jiný, kdo se bude chtít něco přiučit mohl kód vyzkoušet rovnou přikládám ostatní potřebné scripty:
    Script na vytvoření testovací tabulky
    Kód:
    CREATE TABLE `iluze_com_scpalmovka`.`tabulka` (
    `mesto` VARCHAR( 250 ) NOT NULL ,
    `jmeno` VARCHAR( 250 ) NOT NULL
    ) ENGINE = MYISAM
    vložení testovacích dat
    Kód:
    INSERT INTO tabulka (mesto, jmeno)  
    VALUES ('brno', 'gustav');
    INSERT INTO tabulka (mesto, jmeno)  
    VALUES ('brno', 'harold');
    INSERT INTO tabulka (mesto, jmeno)  
    VALUES ('brno', 'franta');
    INSERT INTO tabulka (mesto, jmeno)  
    VALUES ('brno', 'david');
    INSERT INTO tabulka (mesto, jmeno)  
    VALUES ('brno', 'emil');
    INSERT INTO tabulka (mesto, jmeno)  
    VALUES ('praha', 'cecílie');
    INSERT INTO tabulka (mesto, jmeno)  
    VALUES ('praha', 'agáta');
    INSERT INTO tabulka (mesto, jmeno)  
    VALUES ('praha', 'bedřich');
    INSERT INTO tabulka (mesto, jmeno)  
    VALUES ('ostrava', 'ivan');
    INSERT INTO tabulka (mesto, jmeno)  
    VALUES ('ostrava', 'jindřich');
    SQL kód, který dělá to co chceš, vzhledem k tomu, že chceš něco co normálně udělat nejde, má to řešení určité omezení. Tohle řešení bude fungovat pouze do 10ti měst, pokud to budeš chtít rozšířit o řád, je potřeba v kódu změnit výskyt kus kódu kde je
    Kód:
    @rank+@rank+@rank+@rank+@rank+@rank+@rank+@rank+@rank+@rank+1
    místo na 10 na 100x, o další řád 1000x atd. Bohužel MySQL neumí v rankovací funkci násobení. Pro hezčí řešení je udělat variable tabulku, nebo stálou pomocnou tabulku, do ní vložit 1, 10, 100 atd... a to JOINovat a přičítat. Případně nejprve zjistit počet měst a podle toho použít generátor SQL kódu, který opakování zajistí, nebo použije vhodně proměnou. Nicméně to už je jen způsob jak udělat řešení o něco hezčí, na funkčnost vliv nemá.

    A teď finální kód

    Kód:
    SET @rank = 0, @prev_val = NULL, @rankvalue = 10;
    SELECT mesto, jmeno, rank
    FROM (
      SELECT 
      @rank := IF(@prev_val!=jm.mesto,1,@rank+@rank+@rank+@rank+@rank+@rank+@rank+@rank+@rank+@rank+1) AS rank,
      @prev_val := jm.mesto,   
      jm.jmeno,
      jm.mesto 
      FROM
        (SELECT jmeno, mesto
         FROM tabulka
         ORDER BY jmeno, mesto) jm
         JOIN                     
        (SELECT mesto, @curRank := @curRank + 1 AS mestorank
          FROM 
           (SELECT DISTINCT mesto FROM tabulka) t, (SELECT @curRank := 0) r
            ORDER BY mesto) mr
          ON jm.mesto = mr.mesto
    ) final
    ORDER BY rank, mesto, jmeno
    Když budeš chtít vtipnějšímu přispěvovateli poděkovat za asi 2 hodiny práce, tak na http://www.duben.org najdeš můj paypal účet, jinak je tu plus u příspěvku.

  17. ahoj, omlouvám se :)
    v ten den kdy jsem to četl mi to nějak nesedlo a trochu jsem se rozjel. No v každym případě klobouk dolu, že sis s tim dal tolik práce. Snad to tady někdo najde a bude mu tahle informace užitečná. Jinak já to nakonec vyřešil už dřív lehce primitivně a to že jsem na konec dotazu připojil --- order by rand(<náhodné_číslo_pro_vybrané_parametry_vž dy_stejné>) --- takže je to přeházené a dá se to stránkovat, nakonec jsme se dohodli že to nemusí být pravidelné
    M

Hostujeme u Server powered by TELE3