Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    left outer join su una sola tabella

    Ciao a tutti
    In un database ho una tabella composta da 3 campi:

    categoryid
    catparentid
    catname



    tramite una select vorrei ottenere i record relativi all' intero albero delle categorie:

    cat1/cat2/cat3/cat4 ecc...

    con i relativi categopryid

    Con la seguente select ho ottenuto i record costituiti dai soli nomi, ma vorrei ottenere anche i vari id associati

    codice:
    select root.catname  as root_catname
         , down1.catname as down1_catname
         , down2.catname as down2_catname
         , down3.catname as down3_catname
         , down4.catname as down4_catname
         , down5.catname as down5_catname
         , down6.catname as down6_catname
         , down7.catname as down7_catname
      from cart_categories as root
    left outer
      join cart_categories as down1
        on down1.catparentid = root.categoryid
    left outer
      join cart_categories as down2
        on down2.catparentid = down1.categoryid
    left outer
      join cart_categories as down3
        on down3.catparentid = down2.categoryid
    left outer
      join cart_categories as down4
        on down4.catparentid = down3.categoryid
    left outer
      join cart_categories as down5
        on down5.catparentid = down4.categoryid
    left outer
      join cart_categories as down6
        on down6.catparentid = down5.categoryid
    left outer
      join cart_categories as down7
        on down7.catparentid = down6.categoryid
    Ho provato così, alternando gli id al nome della categoria:

    codice:
    select root.categoryid  as root_categoryid
         , down1.catname as down1_catname
         , down2.categoryid as down2_categoryid
         , down3.catname as down3_catname
         , down4.categoryid as down4_categoryid
         , down5.catname as down5_catname
         , down6.categoryid as down6_categoryid
         , down7.catname as down7_catname
         , down8.categoryid as down8_categoryid
         , down9.catname as down9_catname
         , down10.categoryid as down10_categoryid
         , down11.catname as down11_catname
         , down12.categoryid as down12_categoryid
         , down13.catname as down13_catname
      from cart_categories as root
    left outer
      join cart_categories as down1
        on down1.catparentid = root.categoryid
    left outer
      join cart_categories as down2
        on down2.catparentid = down1.categoryid
    left outer
      join cart_categories as down3
        on down3.catparentid = down2.categoryid
    left outer
      join cart_categories as down4
        on down4.catparentid = down3.categoryid
    left outer
      join cart_categories as down5
        on down5.catparentid = down4.categoryid
    left outer
      join cart_categories as down6
        on down6.catparentid = down5.categoryid
    left outer
      join cart_categories as down7
        on down7.catparentid = down6.categoryid
    left outer
      join cart_categories as down8
        on down8.catparentid = down7.categoryid
    left outer
      join cart_categories as down9
        on down9.catparentid = down8.categoryid
    left outer
      join cart_categories as down10
        on down10.catparentid = down9.categoryid
    left outer
      join cart_categories as down11
        on down11.catparentid = down10.categoryid
    left outer
      join cart_categories as down12
        on down12.catparentid = down11.categoryid
    left outer
      join cart_categories as down13
        on down13.catparentid = down12.categoryid
    Ma qualcosa non funziona: viene saltato il primo livello delle categorie

    Qualche suggerimento? Grazie in anticipo

  2. #2
    nicolino, c'è un punto del regolamento che chiede di indicare il db con cui si sta lavorando: mica per rompere le scatole alla gente, ma perché, in casi come questo, le risposte differiscono in base al db, appunto. quindi...

  3. #3
    Ciao optime, in effetti ho dimenticato un dettaglio non da poco
    La versione di MySQL è la 5.1.41

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.