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

    [PHP-Postgres] Query un po Intrigata...

    Scusatemi, mica potreste darmi una mano in una query bastarda che non riesco a eseguire ?

    Nella tabella "query_result" ci sono una serie di telefonate da cellulare,

    Nel "campo1" ci sono i numeri di cellulare,


    Devo selezionare tutti i record dove il numero di cellulare non ha effettuato piu' di una chiamata, se un numero di cellulare ha effettueto anche solo 2 chiamate non devo selezionarne neppure una



    Database Postgres:
    ---------------------------------------------
    SELECT
    public.query_result.campo1,
    public.query_result.campo2,
    public.query_result.campo3,
    public.query_result.campo4,
    public.query_result.campo5
    FROM
    public.query_result;

  2. #2
    codice:
    SELECT
      cellnumber
    
    FROM
      test
    
    GROUP BY
      cellnumber
    
    HAVING
      COUNT(*) <= 1
    questa funziona con mysql ma dovrebbe funzionare perfettamente con postgresql

  3. #3
    ERROR: column "query_result.campo1" must appear in the GROUP BY clause or be used in an aggregate function


    non posso aggregare per un solo campo se nel SELECT ce ne sono altri,
    infatti se provo in mysql funziona...

    POSTGRES è più fiscale, devo aggiungere tutti i campi della SELECT, ma in questo caso poi non raggiungerei il mio risultato...

  4. #4
    mi sembra poco sensato che postgresql ti costringa ad aggiungere tutti i campi della query al group by dato che il group by serve a spiegare al database su quale base effettuare il raggruppamento dei campi :\

    puoi postare per intero la query che stai provando?

  5. #5
    codice:
    SELECT 
    public.query_result.campo_1,
    public.query_result.campo_2,
    public.query_result.campo_3,
    public.query_result.campo_4,
    public.query_result.campo_5,
    public.query_result.campo_6,
    FROM
    public.query_result
    GROUP BY 
    public.query_result.campo_5
    HAVING
      COUNT(*) <= 1;

  6. #6
    SELECT
    campo_1,
    campo_2,
    campo_3,
    campo_4,
    campo_5,
    campo_6
    FROM
    public.query_result
    GROUP BY
    campo_5
    HAVING
    COUNT(*) <= 1;


    c'era una virgola di troppo prima del from e poi non serve specificare ovunque il database e la tabella da cui prendere i dati perché già lo stai dicendo sul from e stai lavorando su una sola tabella

    a me questa query funziona perfettamente su mysql, poi non so se postgresql ha qualche particolare restrizione, ma comunque non mi pare faccia uso di qualche funzione specifica di mysql

  7. #7
    ok, ceto hai ragione,

    nel postgres non va, te lo dico per certo,
    non accetta l'omissione dei restanti campi, comunque ho risolto cosi:

    codice:
    SELECT 
    campo_1,
    campo_2,
    campo_3,
    campo_4,
    campo_5,
    campo_6
    FROM
    public.query_result
    WHERE 
    campo_5 
    IN(
    select campo_5 
    FROM tabella
    GROUP BY campo_5 
    HAVING COUNT(*) <= 1
    );

  8. #8
    boh mi sembra assurdo che postgresql voglia una subquery per fare questo lavoro :\

  9. #9
    La tua risposta la condivido molto........

    solo che ho fatto altre volte una cosa del genere e un GROUP BY con un solo campo mentre ne voglio estrarre più di uno non me lo fa fare...


    SELECT
    public.query_result.campo_1,
    public.query_result.campo_2,
    public.query_result.campo_3,
    public.query_result.campo_4,
    public.query_result.campo_5,
    public.query_result.campo_6,
    FROM
    public.query_result
    GROUP BY
    public.query_result.campo_5
    HAVING
    COUNT(*) <= 1;

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.