Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Query SQL

  1. #1

    Query SQL

    Ciao a tutti, vorrei chiedere un parere sulla possibilità di eseguire una query di questo genere:

    db MsSQL 7.0

    ipotizzando due tabelle:

    TabellaA:
    - ID (int)
    - Titolo (varchar)

    TabellaB:
    - IDTabellaA (int)
    - Importo (decimal)

    ed io ho la necessità di estrarre tutti i titoli che hanno come somma dell'importo della tabella B un importo tra 1000 e 2000...

    la query dovrebbe essere la seguente:

    SELECT ID, Titolo, (SELECT sum(importo) from TabellaB where TabellaB.IDTabellaA = TabellaA.ID) as ImportoTotale FROM TabellaA WHERE ImportoTotale >= 1000 and ImportoTotale <= 2000

    ora il mio problema è che utilizzando ad esempio:
    ORDER BY TabellaA.ImportoTotale riesco ad ordinarle secondo questo criterio, ma se faccio la clausola WHERE non mi funcica... nemmeno dandogli TabellaA.ImportoTotale...

    qualcuno saprebbe aiutarmi plis
    ...Guardatevi Molto Bene Dai Programmatori Con In Mano Un Cacciavite...

  2. #2
    codice:
    select id, titolo, sum(importo) as importoTotale from tabellaA, tabellaB where tabellaB.idtabellaA=tabellaA.id and (importoToale>=1000 and importoTotale<=2000) order by importoTotale asc

  3. #3
    emh... non funcica ^^'

    query modificata
    SELECT top 50 Prodotto_26_Pratiche.IDPratica, Prodotto_26_Pratiche.TipoCodice, Prodotto_26_Pratiche.IDProgetto, Prodotto_26_Pratiche.Cod, Prodotto_26_Pratiche.IDCliente, Prodotto_26_Pratiche.IDAmministrazione, Prodotto_26_Pratiche.IDAssicurazione, Prodotto_26_Pratiche.StatoPratica, Prodotto_26_Pratiche.Importo, Prodotto_26_Pratiche.NRate, Prodotto_26_Pratiche.NRateAnnue, Prodotto_26_Pratiche.VTAN, Prodotto_26_Pratiche.DataErogazione, Prodotto_26_Clienti.Nome, Prodotto_26_Clienti.Cognome, Prodotto_26_Assicurazioni.NomeAssicurazione, Prodotto_26_StatoPratica.Descrizione, Prodotto_26_Amministrazioni.RagSoc , Prodotto_26_Amministrazioni.TipoAmm, sum(importorata) as ImportoPagatoPA FROM Prodotto_26_Pratiche, prodotto_26_pa INNER JOIN Prodotto_26_Amministrazioni ON Prodotto_26_Pratiche.IDAmministrazione = Prodotto_26_Amministrazioni.IDAmministrazione INNER JOIN Prodotto_26_Assicurazioni ON Prodotto_26_Pratiche.IDAssicurazione = Prodotto_26_Assicurazioni.IDAssicurazione INNER JOIN Prodotto_26_Clienti ON Prodotto_26_Pratiche.IDCliente = Prodotto_26_Clienti.IDCliente INNER JOIN Prodotto_26_StatoPratica ON Prodotto_26_Pratiche.StatoPratica = Prodotto_26_StatoPratica.IDStatoPratica where prodotto_26_pa.idpratica = prodotto_26_pratiche.idpratica and Prodotto_26_Pratiche.IDProgetto = 2341 and ImportoPagatoPA >= '1000' and ImportoPagatoPA <= '2000'

    che mi restituisce:

    Il prefisso di colonna 'Prodotto_26_Pratiche' non corrisponde a un nome o alias di tabella utilizzato nella query.





    query originale (quella che vorrei mantenere intatta e gestire tramite subquery)
    SELECT top 50 Prodotto_26_Pratiche.IDPratica, Prodotto_26_Pratiche.TipoCodice, Prodotto_26_Pratiche.IDProgetto, Prodotto_26_Pratiche.Cod, Prodotto_26_Pratiche.IDCliente, Prodotto_26_Pratiche.IDAmministrazione, Prodotto_26_Pratiche.IDAssicurazione, Prodotto_26_Pratiche.StatoPratica, Prodotto_26_Pratiche.Importo, Prodotto_26_Pratiche.NRate, Prodotto_26_Pratiche.NRateAnnue, Prodotto_26_Pratiche.VTAN, Prodotto_26_Pratiche.DataErogazione, Prodotto_26_Clienti.Nome, Prodotto_26_Clienti.Cognome, Prodotto_26_Assicurazioni.NomeAssicurazione, Prodotto_26_StatoPratica.Descrizione, Prodotto_26_Amministrazioni.RagSoc , Prodotto_26_Amministrazioni.TipoAmm, (select sum(importorata) as ImportoPagatoPA from prodotto_26_pa where prodotto_26_pa.idpratica = prodotto_26_pratiche.idpratica) as ImportoPagatoPA FROM Prodotto_26_Pratiche INNER JOIN Prodotto_26_Amministrazioni ON Prodotto_26_Pratiche.IDAmministrazione = Prodotto_26_Amministrazioni.IDAmministrazione INNER JOIN Prodotto_26_Assicurazioni ON Prodotto_26_Pratiche.IDAssicurazione = Prodotto_26_Assicurazioni.IDAssicurazione INNER JOIN Prodotto_26_Clienti ON Prodotto_26_Pratiche.IDCliente = Prodotto_26_Clienti.IDCliente INNER JOIN Prodotto_26_StatoPratica ON Prodotto_26_Pratiche.StatoPratica = Prodotto_26_StatoPratica.IDStatoPratica where prodotto_26_pa.idpratica = prodotto_26_pratiche.idpratica and Prodotto_26_Pratiche.IDProgetto = 2341 and ImportoPagatoPA >= '1000' and ImportoPagatoPA <= '2000'
    ...Guardatevi Molto Bene Dai Programmatori Con In Mano Un Cacciavite...

  4. #4
    non c'è un modo standard a mio avviso per fare una query...certo che se il programma ti restituisce
    codice:
    Il prefisso di colonna 'Prodotto_26_Pratiche' non corrisponde a un nome o alias di tabella utilizzato nella query.
    visto che la lingua è l'italiano, mi sembra che non ci siano da aggiungere spiegazioni

    cmq per abbreviare il codice sql esistono anche le denominazioni alias_tabella.* se devi estrapolare tutti i dati della tabella

  5. #5
    personalmente preferisco estrapolare solo le colonne che mi interessano dato che è una query abbastanza lunga :P

    adesso continuerò a fare un po' di prove ma ho paura che quello di cui ho bisogno non si possa fare senza usare una t-sql
    ...Guardatevi Molto Bene Dai Programmatori Con In Mano Un Cacciavite...

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.