Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    postgreSQL DISTINCT Vs Group By


    ...ho scoperto che...postgreSQL a differenza di MySql non accetta una query tipo

    select * from tabella GROUP BY campo <-- valida per MYSQL ma non per postgreSQL

    ...o poi scoperto che per realizzare una cosa come "select * from tabella GROUP BY campo" con postgreSQL è necessario fare una Subquery....

    ---------------------------------
    Domanda 1:
    davvero è l'unica soluzione?
    ---------------------------------

    Ho per cui impostato la mia query come segue:

    codice:
    "SELECT * FROM tabella WHERE campo1 = '$campo1' AND campo2 = '$campo2' AND campo3 = '$campo3' AND campo4
    IN(SELECT campo4 FROM tabella GROUP BY campo4 HAVING COUNT(*) <= 1)"
    - Ho nella tabella 30 record:
    tipo:
    CAMPO4
    100
    50
    50
    50
    50
    50
    50
    50
    50
    50
    50
    50
    50


    - dovrebbe stamparne 2 (100 e 50)
    - mentre invece me ne stampa 1 solo ovvero il 100

    cosa sbaglio?

  2. #2
    EDIT: edited

    scusa, ho riletto e non capisco una cosa: ma che cosa dovrebbe fare quella query nella pratica? concettualmente che cosa dovrebbe fare?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Si ho fatto un post abbastana confuso
    Dovrei pescare in modo unico il campo4 ma avere poi nel ciclo while anche gli altri campi da stampare per questo non voglio fare un distinct

  4. #4
    Una cosa tipo

    codice:
    "SELECT * FROM tabella WHERE campo1 = '$campo1' AND campo2 = '$campo2' AND campo3 = '$campo3' AND campo4
    IN(select * from tabella group by campo4)"

  5. #5
    il fatto è che ho un WHERE con + clausole tra le quali quella di pescare in modalità "distinct" il campo4

  6. #6
    si ma quella where la capisco poco... mettiamo caso che tu trovi due record che hanno campo1 = '$campo1' AND campo2 = '$campo2' AND campo3 = '$campo3' ma hanno campo4 uguale, con quale criterio vuoi scartare l'uno piuttosto che l'altro?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    il primo che trova

  8. #8
    ok:

    codice:
    
    select distinct on (campo4) campo4, * from tabella where campoN = '$campoN' order by campo4;
    se usi * conta che ti ripete due volte la colonna campo4, altrimenti invece di * puoi mettere i nomi delle varie colonne che ti servono

    ps: distinct on deve essere il primo campo della select altrimenti mi pare non funzioni
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    Santino83_02
    sEI SEMPRE IL tOP !!! grazie funziona bene

  10. #10
    Originariamente inviato da -AA-
    Santino83_02
    sEI SEMPRE IL tOP !!! grazie funziona bene
    guarda ti ringrazio perchè l'ho scoperta ora grazie a te questa funzione del distinct e potrebbe tornarmi utile in un paio di query che ho in esercizio ora...

    cmq ti bacchetto: bastava leggere con calma e attenzione la documentazione di postgresql, in particolare la documentazione del comando SELECT
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.