Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714

    query su DB con un campo di riferimento

    Ciao ragazzi,
    non sono pratico di query quindi vi chiedo aiuto:

    ho una tabella del genere

    campo_1 (id univoco)
    campo_2
    campo_3

    il campo_3 può contenere il riferimento al campo_1 (ovvero contiene proprio il valore campo_1 di un latro record).

    Scrivo un esempio... ecco la tabella da cui parto:

    1 -- ciccio -- "vuoto"
    2 -- pippo -- "vuoto"
    3 -- caruso -- 1
    4 -- lucio -- "vuoto"
    5 -- cane -- 1

    ora lancio la query:
    "SELECT * FROM tabella order by campo_1"

    chiaramente appare la seguente risposta:
    1 -- ciccio -- "vuoto"
    2 -- pippo -- "vuoto"
    3 -- caruso -- 1
    4 -- lucio -- "vuoto"
    5 -- cane -- 1

    solo che io vorrei apparisse così:
    1 -- ciccio -- "vuoto"
    3 -- caruso -- 1
    5 -- cane -- 1
    2 -- pippo -- "vuoto"
    4 -- lucio -- "vuoto"

    potete aiutarmi?
    grazie
    mir
    Fotografario MultiUtente Interamente in Flash: QUI

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    si hai ragione ... un semplice db access
    Fotografario MultiUtente Interamente in Flash: QUI

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    Quote Originariamente inviata da Mir Visualizza il messaggio
    vorrei apparisse così:
    1 -- ciccio -- "vuoto"
    3 -- caruso -- 1
    5 -- cane -- 1
    2 -- pippo -- "vuoto"
    4 -- lucio -- "vuoto"
    il riferimento al campo 3->1 non mi pare che entri in gioco sull'ordinamento richiesto
    lo stesso non capisco il criterio di ordinamento, sembra: campo_1 prima i dispari e poi pari.
    è così?

    altrimenti spiega il risultato che vuoi ottenere
    Ultima modifica di Vincent.Zeno; 30-12-2013 a 01:42

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    cerco di spiegarmi meglio ... se uso la query semplicmente mi appare l'elenco dove l'ordine è dato dal campo_1

    1 -- ciccio -- "vuoto"
    2 -- pippo -- "vuoto"
    3 -- caruso -- 1
    4 -- lucio -- "vuoto"
    5 -- cane -- 1


    Solo che io voglio che i record che hanno un riferimento stiano subito dopo il record a cui si riferiscono

    1 -- ciccio -- "vuoto"
    3 -- caruso -- 1
    5 -- cane -- 1
    2 -- pippo -- "vuoto"
    4 -- lucio -- "vuoto"

    Non centra nulla il pari ed il dispari ... forse è solo casuale per via dei pochi record che ho messo ... provo ad allungare la tabella:

    1 -- ciccio -- "vuoto"
    3 -- caruso -- 1
    5 -- cane -- 1
    2 -- pippo -- "vuoto"
    6 -- giulio-- 2
    7 -- antonio -- 2
    4 -- lucio -- "vuoto"
    8 -- paolo-- "vuoto"




    Fotografario MultiUtente Interamente in Flash: QUI

  6. #6
    prova con

    SELECT CAMPO1, CAMPO2, CAMPO3
    FROM TABELLA
    ORDER BY ISNULL(CAMPO3, CAMPO1), CAMPO1

    ma campo3 deve essere NULL non "vuoto"

  7. #7
    però per Access l'istruzione isnull non è quella standard... prova con

    ... ORDER BY IIF(ISNULL(CAMPO3),CAMPO1,CAMPO3), CAMPO1

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Grazie optime ma non mi risulta nulla.

    questo è il codice reale che uso

    "SELECT * FROM Forum_sms WHERE gruppo=" & Trim(Request("gruppo")) & " and Stato='A' ORDER BY IF(ISNULL(ID_riferimento,ID_forum)), data_pub ASC"

    ma mi dà errore

    Microsoft JET Database Engine error '80040e14'
    Wrong number of arguments used with function in query expression 'IIF(ISNULL(ID_riferimento,ID_forum))'.



    Fotografario MultiUtente Interamente in Flash: QUI

  9. #9
    IIF non IF - e ci sono altri errori, leggi bene il mio esempio

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Allora vediamo un po' ... ci ho messo un po' a capire ma ancora non ho trovato la soluzione. Questa è la tabella che devo ordinare

    Forum_sms
    ID_forum ID_riferimento
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    110 95
    111 95
    112
    113 95
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125

    uso questa query:
    select * from (SELECT ID_forum, ID_riferimento, IIF(ID_riferimento Is Null, ID_forum, ID_riferimento) as ID_gino, FROM Forum_sms) order by ID_gino, ID_forum asc

    ma ottengo questo ... che non è ancora l'elenco che vorrei ottenere (PS: l'ID_forum è come un campo data in quanto il numero più piccole significa la data più vecchia del record):

    admin Query Query
    ID_forum ID_riferimento ID_gino
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    112
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    110 95 95
    111 95 95
    113 95 95


    please aiutami....

    grazie
    mir
    Fotografario MultiUtente Interamente in Flash: QUI

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.