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

    INNER JOIN SELECT come estrarre solo il primo di ogni campo

    Buongiorno,
    ho un problema con una query un pochino complessa, che estrae una serie di record e li mette su una datatable di Bootstrap, di questi avrei bisogno di sapere come fare ad estrarre solo il primo di ogni record della seguente query tramite l' ultimo JOIN,
    nel seguente modo estrae tutti i record per id:
    codice:
    select
                SE.id_sedeCliente,
                trim(concat(IFNULL(SC.ragioneSociale,"")," ",IFNULL(SC.formaSocietaria,""))) societa,
                SC.ragioneSociale,
                SC.formaSocietaria,
                SC.titolare,
                SC.partitaIva,
                SC.codiceFiscale,
                if(trim(IFNULL(ISE.indirizzo,""))="","",trim(concat(lower(IFNULL(ISE.toponimo,""))," ",IFNULL(ISE.indirizzo,""),", ",IFNULL(ISE.civico,"")))) indirizzo,
                ISE.cap,
                ISE.comune,
                ISE.provincia,    
                ISE.telefono1,
                ISE.cellulare,
                ISE.fax,
                ISE.email,
                ISE.sito,
                IFNULL(CMW.nome,"") ServizioMW,
                IFNULL(CMW.crediti,"") crediti,
                IFNULL(CMW.residui,"") residui,
                IFNULL(CMW.abilitato,"") abilitato,            
                IFNULL(AMW.allievi,0) allievi,
                IFNULL(SER.creditiAggiunti ,0) aggiunti,
                SER.dataAggiornamento
                from sedeclienteneca SE
                left join societaclienteneca SC on SC.id_societacliente = SE.id_societacliente
                left join indirizzosedeclienteneca ISE ON ISE.id_sedeCliente=SE.id_sedeCliente
                left join utente U on U.id_sedeClienteNeca = SE.id_sedeClienteNeca
                left join crediti_mw CMW on CMW.id_sedeCliente = SE.id_sedeCliente AND CMW.abilitato=1
                left join allievi_mw AMW on AMW.id_sedeCliente = SE.id_sedeCliente
                left join keychain K on K.id_keychain=U.id_keychain
                INNER join (
                       SELECT * FROM `servizi` SER 
                       WHERE creditiAggiunti != "0" 
                    ORDER BY SER.dataAggiornamento DESC
                ) AS SER
                ON SER.id_sedeCliente = SE.id_sedeCliente
                WHERE SE._Stato!="D" AND ISE.priorita=0 and CMW.nome="PIPPO" and SER.creditiAggiunti!="0" 
                ORDER by societa
    e il risultato è qualcosa simile a questo per tutti gli id_sedeCliente:

    7260 000000000_TESTCREDITIFINALE2 coop. 000000000_TESTCREDITIFINALE2 coop. pippo 12345678765 pippo clle PIPPO, NULL 250 249 1 1 250 2023-08-30 10:29:39
    7260 000000000_TESTCREDITIFINALE2 coop. 000000000_TESTCREDITIFINALE2 coop. pippo 12345678765 pippo clle PIPPO, NULL 250 249 1 1 30 2023-08-30 10:57:03
    7260 000000000_TESTCREDITIFINALE2 coop. 000000000_TESTCREDITIFINALE2 coop. pippo 12345678765 pippo clle PIPPO, NULL 250 249 1 1 30 2023-08-30 10:57:27
    7260 000000000_TESTCREDITIFINALE2 coop. 000000000_TESTCREDITIFINALE2 coop. pippo 12345678765 pippo clle PIPPO, NULL 250 249 1 1 30 2023-08-30 10:57:49
    7260 000000000_TESTCREDITIFINALE2 coop. 000000000_TESTCREDITIFINALE2 coop. pippo 12345678765 pippo clle PIPPO, NULL 250 249 1 1 -180 2023-08-30 10:58:10
    7260 000000000_TESTCREDITIFINALE2 coop. 000000000_TESTCREDITIFINALE2 coop. pippo 12345678765 pippo clle PIPPO, NULL 250 249 1 1 -300 2023-08-30 10:58:45
    7261 000000000_TESTCREDITIFINALE3 coop. 000000000_TESTCREDITIFINALE3 coop. pippo 12345678765 pippo clle PIPPO, NULL 222 220 1 1 200 2023-08-30 11:00:54

    io però vorrei solo il primo record per ogni id_sede seguito dall' ultimo ce come vedete cambia parametri
    Qualcuno sa come fare?
    Ultima modifica di Maxilboss93; 06-09-2023 a 15:07

  2. #2
    mancava semplicemente groupby, ora però mi ordina il groupby al contrario riepetto a come desidero, idee?
    Ultima modifica di Maxilboss93; 06-09-2023 a 15:07

  3. #3
    puoi postare la query attuale?
    ARTRIPE

  4. #4
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    952
    Quote Originariamente inviata da Maxilboss93 Visualizza il messaggio
    mancava semplicemente groupby, ora però mi ordina il groupby al contrario riepetto a come desidero, idee?
    Non so come la group by possa risolverti questo problema, vedendo il dataset postato ci sono campi con valori differenti, che quindi con una group by correttamente applicata ti ritornerebbero, a parità di idsede più record. Probabilmente stai usando MySql come DBMS.

    In ogni caso, devi funzionalmente, trovare tu una discriminante per dire "questo è il primo record che voglio", ad esempio, nel tuo dataset c'è il campo dataAggiornamento, quello potrebbe essere un buon discriminante

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
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2023 vBulletin Solutions, Inc. All rights reserved.