+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Problema con stringa SQL

  1. #1
    karlettogd non è in linea Novello
    Luogo
    Trujillo, PERU'
    Post
    3

    Post Problema con stringa SQL

    Buongiorno

    Sono giorni che mi sto scervellando per una cosa che forse e' banale, ma non trovo il bandolo della matassa:

    Sto usando Visual Basic 2015 Enterprise.

    HO una tabella ACCESS con 4 Campi
    hcat -Numerico
    nlevel -Nnumerico
    hcatParent - Numerico
    szFull - Stringa

    hcat e' un campo autoinc
    nlevel ha come valori 0 oppure 1 oppure 2
    hcatParent e' collegato a hcat
    szFull e' un campo di descrizione

    Esempio

    hcat hcatParent nlevel szFull
    130 NULL 0 ENTRATE
    131 NULL 0 USCITE
    132 130 1 Entrate varie
    133 132 2 Pensione
    134 131 1 Pagamenti
    135 134 2 Telefono fisso
    136 132 2 13a mensilita
    ecc ...
    Devo visualizzare ne seguente ordine:
    130 NULL 0 ENTRATE
    132 132 1 Entrate varie
    133 132 2 Pensione
    136 132 2 13a mensilita
    131 NULL 0 USCITE
    134 131 1 Pagamenti
    135 134 2 Telefono fisso
    ecc ...

    Ho fatto mille tentativi alla fine sono andato in pallone, ecco la mia stringa:

    codice:
    sSQL = " Select DISTINCT  c.hcat, c.hcatParent, c.nlevel , c.szFull FROM (((CAT as c "
            sSQL = sSQL & " LEFT Join CAT AS t ON (c.hcat = t.hcatParent And t.nlevel =  " & 0 & "))"
            sSQL = sSQL & " LEFT Join CAT AS f ON (c.hcat = f.hcatParent And f.nlevel = " & 1 & "))  "
            sSQL = sSQL & " LEFT Join CAT AS e ON (c.hcat = e.hcatParent And e.nlevel = " & 2 & "))  "
            '        sSQL = sSQL & " WHERE t.hcatParent Is Not NULL Or f.hcatParent Is Not NULL Or e.hcatParent Is Not NULL  Or c.hcatParent Is NULL "
            sSQL = sSQL & " ORDER BY c.hcat ASC, c.hcatParent ASC, c.szFull ASC"
    Ma non escono come vorrei.
    Non chiedo la pappa pronta ma uno spunto su cui ragionarci se possibile.
    Grazie
    Ultima modifica di karlettogd; 29-11-2019 06:35 

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,858
    Blogs
    5
    Ma quell'ordine quali criteri segue?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    420
    Credo sia sbagliata la normalizzazione delle tabella...
    Io la suddividerei in 2 tabelle:
    La prima tabella con le colonne: hcat, IdTipoMovimento, ecc...
    La seconda con le colonne: IdTipo, TipoMovimento (Entrate/Uscite), Livello, Descrizione.
    Così hai 1 Join soltanto e puoi ottenere i dati con un Order By secondo le colonne della seconda tabella

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,858
    Blogs
    5
    Anche io la penso come te. Sembra che il primo ordine sia per Entrate/Uscite, informazione che non esiste codificata nella tabella (per difetto di normalizzazione).
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    karlettogd non è in linea Novello
    Luogo
    Trujillo, PERU'
    Post
    3

    Database table

    Grazie per la risposta e mi spiego subito:
    Si tratta di una tabella di Nome CAT di un programma di contabilita di una nota azienda.
    IO sto facendo un programma alquanto simile.
    La tabella contiene le categorie contabili Entrate Uscite ecc
    Di solito io faccio sempre due tabella una di Gruppi e l'altra di sottogruppi. Questa volta volevo diversamente.
    I criteri che segue sono:
    Hcat che e' un codice progressivo
    nLevel 0 o 1 o 2
    hcatParent codice legato a hcat

    Spero di essermi spiegato e comunque grazie per le risposte.

    [IMG]C:\Users\giand\OneDrive\Desktop\Cattura.PNG[/IMG]
    Ultima modifica di karlettogd; 29-11-2019 17:31  Motivo: Inserimento immagine

  6. #6
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,858
    Blogs
    5
    Non hai spiegato i criteri con cui vorresti ordinare e non hai fatto alcun commento rispetto a quanto suggerito.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  7. #7
    karlettogd non è in linea Novello
    Luogo
    Trujillo, PERU'
    Post
    3
    Ecco copia di alcuni record:

    hcat nLevel hcatParent szFull
    130 0 NULL INCOME
    131 0 NULL EXPENSE
    132 1 130 Investment Income
    133 2 132 Dividends
    134 2 132 Interest
    135 2 132 Capital Gains
    136 2 132 Tax-Exempt Interest
    137 1 130 Not an Expense
    138 1 130 Other Income
    139 2 138 Child Support Received
    140 2 138 Gifts Received
    141 2 138 Loan Principal Received
    142 2 138 Lotteries
    143 2 138 State & Local Tax Refund
    144 2 138 Unemployment Compensation
    145 2 138 Employee Stock Option
    146 1 130 Retirement Income
    147 2 146 IRA Distributions
    148 2 146 Pensions & Annuities
    149 2 146 Social Security Benefits
    150 1 130 Wages & Salary
    151 2 150 Bonus
    152 2 150 Commission
    153 2 150 Employer Matching
    154 2 150 Gross Pay
    155 2 150 Net Pay
    156 2 150 Overtime
    157 1 130 Income/Interest
    158 1 131 Automobile
    159 2 158 Gasoline
    160 2 158 Maintenance
    161 2 158 Car Payment
    162 1 131 Bills
    163 2 162 Cell Phone
    164 2 162 Cable/Satellite Television

    Ora forse si capisce meglio.
    Grazie e ciao.

  8. #8
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,858
    Blogs
    5
    Ti chiedo i criteri ed elenchi i record?

    Non ci capiamo...
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  9. #9
    Dev-01 non è in linea Scribacchino
    Post
    533
    Immagino tu sia un neofita almeno della progettazione dei database.

    La soluzione ti è già stata suggerita da sgrubak e confermata da Antonio e dovresti approfondirla.

    Pensare di progettare e realizzare un'applicazione commerciale con queste lacune ti porterà ad investire ben più dei due giorni attuali perché incontrerai problemi più grossi.

    Ti consiglio almeno una ricerca in rete sulla normalizzazione dei database relazionali e un buon libro su SQL poiché lo studio del linguaggio e delle sue caratteristiche ti porteranno a conoscere e comprendere le possibilità che ti offre e come realizzare applicazioni datacentriche funzionali, manutenibili e rispettose dei criteri di progettazione.

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi