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

    Select prodotti al livello massimo di profondità categoria

    Dovrei selezionare i nomi dei prodotti da una tabella in cui per ciascun record ho i seguenti campi:

    Categoria1;Categoria2;Categoria3;Categoria4;Catego ria5;Categoria6;NomeProdotto

    Se un prodotto è collegato alla Categoria6, nella tabella ci sono 6 record con lo stesso nome prodotto:

    Categoria1;NomeProdotto
    Categoria1;Categoria2;NomeProdotto
    Categoria1;Categoria2;Categoria3;NomeProdotto
    Categoria1;Categoria2;Categoria3;Categoria4;NomePr odotto
    Categoria1;Categoria2;Categoria3;Categoria4;Catego ria5;NomeProdotto
    Categoria1;Categoria2;Categoria3;Categoria4;Catego ria5;Categoria6;NomeProdotto

    Non ho idea su come costruire una query che restituisca solo i prodotti associati al "livello più basso" di categoria, nell'esempio qui sopra è 6

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    23
    Ciao Nicola, non ho ben capito la situazione.. ma non potresti fare una tabella con solo 2 campi Id_categoria e Id_prodotto? Poi, qui dentro potrai avere, per un singolo prodotto, una serie di categorie e, per recuperari quella minima, ti basterebbe fare un MIN.

    F.

  3. #3
    Ciao Fede_91, purtroppo la tabella è già stata strutturata e non da me

    Se non sbaglio mi stai suggerendo una struttura del genere:

    id_categoria
    id_categoria_superiore
    id_prodotto

    e poter così ricostruire l'albero con una query ricorsiva

    In realtà vorrei ottenere solo i record in cui ciascun prodotto si trova al livello più profondo di categoria

    Quindi il prodotto A può trovarsi al massimo associato a Categoria1 e Categoria2

    Come il prodotto B può trovarsi al massimo associato a 5 livelli di categoria

    Scartando ovviamente i record in cui il prodotto figura in posizioni intermedie

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Si, la struttura della tabella è incasinata, ma se è un dato di partenza allora bisigna partire da li.

    se stilizziamo per semplicita i nomi campi in NP, C1, C2, C3, C4, C5, C6
    con un if nidificato riesci a trovare la massima categoria di quel record,
    poi devi ancora
    - raggruppare
    - eccetera
    codice:
    SELECT 
    Tabe.NP, 
    Tabe.C1, 
    Tabe.C2, 
    Tabe.C3, 
    Tabe.C4, 
    Tabe.C5, 
    Tabe.C6, 
    IIf(Nz([Tabe].[C6],"")="",(IIf(Nz([Tabe].[C5],"")="",(IIf(Nz([Tabe].[C4],"")="",(IIf(Nz([Tabe].[C3],"")="",(IIf(Nz([Tabe].[C2],"")="",(IIf(Nz([Tabe].[C1],"")="","x0","x1")),"x2")),"x3")),"x4")),"x5")),"x6") AS MaxC 
    FROM 
    Tabe
    ;
    quale DB usi ?
    Facci sapere

    .
    Ultima modifica di nman; 30-10-2013 a 07:45

  5. #5
    Ciao nman sto utilizzando mysql con phpmyadmin

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da Nicola4600 Visualizza il messaggio
    .... mysql con phpmyadmin ....
    Tutta roba che io non uso, pero SQL è sempre SQL
    se riesci a tradurre quell' if nidificato nella tua sintassi sei al 90%

    se C6 è pieno scrivi x6 diversamente valuta la condizione successiva
    se C5 è pieno scrivi x5 diversamente valuta la condizione successiva
    se C4 è pieno scrivi x4 diversamente valuta la condizione successiva
    se C3 è pieno scrivi x3 diversamente valuta la condizione successiva
    se C2 è pieno scrivi x2 diversamente valuta la condizione successiva
    se C1 è pieno scrivi x1 diversamente valuta la condizione successiva
    scrivi x0

    facci sapere
    Ultima modifica di nman; 30-10-2013 a 09:48

  7. #7
    Potrei esportare i dati in formato csv ed importarli in una tabella creata con ms access

    Facendo così potrei seguire le istruzioni che hai suggerito?

  8. #8
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da Nicola4600 Visualizza il messaggio
    ... Facendo così potrei seguire le istruzioni che hai suggerito? ....
    Si

    pero sai che facendo cosi non sei piu connesso al tuo DB MySql

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 © 2025 vBulletin Solutions, Inc. All rights reserved.