Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33

Discussione: distinct complicata

  1. #1
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916

    distinct complicata

    almeno per me lo è...

    questa distinct:

    codice:
    SELECT DISTINCT (indirizzo),nome,luogo FROM ( SELECT email AS indirizzo, nome AS nome, provincia AS luogo FROM db1SQL..richieste_info WHERE email <> 'n/d' AND codstore = '"&cs1&"' OR codstore = '"&cs2&"'  UNION SELECT emaild AS indirizzo,ragionesociale AS nome,provinciad AS luogo FROM db1SQL..richieste_info WHERE emaild <> 'n/d' AND codstore = '"&cs1&"' OR codstore = '"&cs2&"') as taabb
    funziona nel senso che non da errore, ma i risultati non sono come dovrebbero essere.
    come la devo modificare per far si che la distinct sia solo su "indirizzo", ma che possa comunque prelevare nome e luogo ???

    grazie.
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  2. #2
    1. che db usi?
    2. metti la query su più righe, così si capisce meglio?

    graass

  3. #3
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    uso sqlserver
    codice:
    SELECT DISTINCT (indirizzo),nome,luogo FROM 
    ( SELECT email AS indirizzo, nome AS nome, provincia AS luogo FROM 
    db1SQL..richieste_info WHERE 
    email <> 'n/d' AND codstore = '"&cs1&"' OR codstore = '"&cs2&"'  
    UNION SELECT emaild AS indirizzo,ragionesociale AS nome,provinciad AS luogo FROM
     db1SQL..richieste_info WHERE 
    emaild <> 'n/d' AND codstore = '"&cs1&"' OR codstore = '"&cs2&"') 
    as taabb
    non so se così l'ho messa bene... non sono abituato.
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  4. #4
    hai fatto una UNION e adesso vuoi fare una distinct? con quale criterio? se trova uno stesso indirizzo, cosa deve prendere? fa' un esempio, così si capisce meglio

  5. #5
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    la questione è che prima dovevo recuperare solo "indirizzo", e funzionava:

    codice:
    "SELECT DISTINCT indirizzo FROM 
    ( SELECT email AS indirizzo FROM db1SQL..richieste_info WHERE codstore = '"&cs1&"' OR codstore = '"&cs2&"'  
    UNION SELECT 
    emaild AS indirizzo FROM db1SQL..richieste_info WHERE codstore = '"&cs1&"' OR codstore = '"&cs2&"')
    as taabb"
    adesso voglio recuperare anche altri valori, ma la distinct deve essere fatta solo per "indirizzo"!
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  6. #6
    fa' una group by allora, invece di una distinct

  7. #7
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    Originariamente inviato da optime
    fa' una group by allora, invece di una distinct
    ho provato ma non ci sono riuscito...
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  8. #8
    ne so quanto prima, se non posti i tentativi. yro, dovresti sapere oramai come si fa

  9. #9
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    un esempio:


    codice:
    "SELECT indirizzo,nome,luogo FROM 
    ( SELECT email AS indirizzo, nome AS nome, provincia AS luogo 
    FROM db1SQL..richieste_info 
    WHERE email <> 'n/d' 
    AND codstore = '"&cs1&"' 
    OR codstore = '"&cs2&"' 
    UNION SELECT emaild AS indirizzo,ragionesociale AS nome,provinciad AS luogo 
    FROM db1SQL..richieste_info 
    WHERE emaild <> 'n/d' 
    AND codstore = '"&cs1&"' OR codstore = '"&cs2&"') 
    as taabb  
    GROUP BY indirizzo "
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
    [Microsoft][ODBC SQL Server Driver][SQL Server]La colonna 'taabb.nome' non è valida nell'elenco di selezione perché non è inclusa né in una funzione di aggregazione né nella clausola GROUP BY.
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  10. #10
    sql te lo dice (impara a leggere e capire gli errori ): La colonna 'taabb.nome' non è valida nell'elenco di selezione perché non è inclusa né in una funzione di aggregazione né nella clausola GROUP BY.

    quindi aggiungi nella GROUP BY tutti i campi che sono nella SELECT. inizia così, poi ne riparliamo perché so che non ti andrà bene. ma tu intanto inizia

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.