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

    [Mysql 5] IF statement con COUNT nella condizione da verificare

    Salve a tutti,

    la seguente query:
    Codice PHP:
    IF (select count(idfrom nomeTab>5THEN (UPDATE statement 1);
    ELSE (
    UPDATE statement 2);
    END IF; 
    è possibile, oppure è solo frutto della mia fantasia?

    Leggendo questo documento mi pareva lo fosse, ma nella pratica mi da errore 1064.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non ho capito esattamente cosa vuoi fare.

  3. #3
    Ciao nicola75ss,

    per fare l'UDATE solo se è verificata la condizione COUNT> 5 per le righe della stessa tabella
    attualmente utilizzo il seguente codice:

    Codice PHP:
    <%sqlString "SELECT COUNT(id_scheda) AS Conta FROM nomeTab WHERE (id_prorpieta=3)"

    contarighe nomeConn.Execute sqlString

    IF contarighe 5 then
       sqlString 
    "UPDATE nomeTab set nomeCampo='Rosso'"
       
    nomeConn.execute sqlString
    END 
    IF%> 
    Pensavo di evitare le 2 chimate unendo le 2 query tramite l'utilizzo del 'IF STATEMNT

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Spero di essere smentito ma non credo sia fattibile con una singola query.
    Sicuramente mi sfugge qualcosa ma non capisco il senso di aggiornare tutti i record a un determinato valore in base al numero di righe presenti.

  5. #5
    Nell'esempio ho ridotto ai minimi termini il concetto, perciò capisco che la cosa sembra assurda.

    Senza scendere nei particolari dell'applicazione volevo solo saperese se era possibile creare un:
    IF (select(cont)) then..

    ma anche dal seguente articolo mi pare chiaro che non si possa fare.

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Son sempre perplesso.

    Comunque, prova ad adattare questa query al tuo contesto, in modo da avere per ogni riga il conteggio totale

    codice:
    select tabella.*,tab.quanti from tabella
    inner join (select count(nome_campo)as quanti from tabella) as tab
    Se il risultato è quello atteso prosegui così


    codice:
    update tabella
    left join
    (
    select tabella.*,tab.quanti from tabella
    inner join (select count(nome_campo)as quanti from tabella) as tab) as t
    on tabella.id = t.id
    set tabella.nome_campo = 
    case 
    when quanti > 3 then 'rosso'
    else tabella.nome_campo
    end

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.