Avatar billede cyberjelle Nybegynder
12. august 2006 - 23:36 Der er 4 kommentarer og
1 løsning

Advanceret mysql?

Et eksempel!
Jeg har flg tabel:

|id| - |dir| - |subdir_to|

|1| - |tools| - |0|
|2| - |hammer| - |1|
|3| - |screwdriver| - |1|
|4| - |fruits| - |0|
|5| - |yellow_fuits| - |4|
|6| - |green_fuits| - |4|
|7| - |apple| - |6|
|8| - |banana| - |5|
|9| - |grape| - |6|

Som i sikkert allerede kan forestille jer, er det et bibliotekstræ.


1. Er det muligt, med EN query, at fx få stien til grape biblioteket? Dvs. følgende output:
|4| - |fruits| - |0|
|6| - |green_fruits| - |4|
|9| - |grape| - |6|


2. Og hvordan, hvis man skal have hele træet? Dvs.
|1| - |tools| - |0|
  |2| - |hammer| - |1|
  |3| - |screwdriver| - |1|
|4| - |fruits| - |0|
  |6| - |green_fuits| - |4|
    |7| - |apple| - |6|
    |9| - |grape| - |6|
  |5| - |yellow_fuits| - |4|
    |8| - |banana| - |5|

Har virkelig sat mine tanker i gang, men jeg er ikke engang sikker på, at både 1 og 2 rent faktisk kan gøre med EN query (selvfølgelig hver for sig).
Avatar billede cyberjelle Nybegynder
12. august 2006 - 23:38 #1
Det skal lige siges ( hvis det ikke giver sig selv ), at i tilfælde 1. er den eneste information man har:
|9| - |grape|

Og at biblioteket (i princippet) kan være uendelig dybt.
Avatar billede cyberjelle Nybegynder
14. august 2006 - 21:43 #2
lukker
Avatar billede Slettet bruger
18. august 2006 - 02:38 #3
Nutidens ungdom har ikke megen tålmodighed ;-)

Hvis man skal have hele træet, er det letteste bare at hive alle rækker ud, og smide dem ind i et passende array. I PHP har jeg brugt noget i denne stil:


function listdir($id){
  global $alldirs;
  echo '<ul>';
  foreach($alldirs[$id] as $direntry){
    echo '<li>' . $direntry['id'] . ' ' . $direntry['dir'];
    if(isset($alldirs[$direntry['id']]){
      listdir($direntry['id']);
    }
    echo '</li>';
  }
  echo '</ul>';
}

$alldirs = array();
while($row=mysql_fetch_assoc($res)){
  $alldirs[$row['subdir_to']][] = $row;
}

listdir(0);

Til gengæld tror jeg ikke det er umuligt at lave en enkelt query, der henter komplet sti til et specifikt entry, når det kan være på et vilkårligt niveau.
Avatar billede cyberjelle Nybegynder
18. august 2006 - 09:08 #4
Nutidens ungdom indser, at det ikke umiddelbart er muligt, og udtrækker hele tabellen, og indsætter dem i et passende array med en rekursiv funktion (som heller ikke umiddelbart ville virke):
http://www.eksperten.dk/spm/726139
Ellers mange tak.
Avatar billede cyberjelle Nybegynder
18. august 2006 - 23:44 #5
genåbning af del 1 : http://www.eksperten.dk/spm/727052
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester