Visualizzazione dei risultati da 1 a 3 su 3

Discussione: IF in MySql

  1. #1

    IF in MySql

    Ciao a tutti
    Sto cercando la sintassi per le funzioni condizionali in MySQL, ma probabilmente non sono definite, dato che non sono riuscito a trovarle sul web, ma per sicurezza volevo chiedere conferma. :P

    Ad esempio per la funzione IF, l'unica sintassi che ho trovato è:
    SELECT IF (cond, field1, field2) WHERE table

    A me servirebbe qualcosa di più generico.
    Nel problema che ho attualmente vorrei fare una cosa del genere:
    codice:
    SELECT field1, field2, ...., fieldK
    IF(table1.fieldX != NULL, (table2.fieldK+1, ..., table2.fieldN) )
    FROM table1
    IF(table1.fieldX != NULL, 
     (JOIN table2 ON table1.fieldX = table2.id) )
    Detto a parole: fa una JOIN su una tabella2 attraverso un campo X della tabella1.
    Da ciò che ottiene seleziona vari campi dell'una e dell'altra.

    Se però il campo X = NULL, non restituisce niente.
    Invece in questo caso deve restituire solo i risultati presi dalla prima tabella.


    Come posso fare?

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    non è che devi cercarle sul web, ti basta il dettagliatissimo manuale mysql online

    se cerchi "mysql if" con google ecco il primo risultato

    http://dev.mysql.com/doc/refman/5.0/...statement.html
    ---
    Riguardo a quello che vuoi fare francamente non ci ho capito molto , apparentemente vuoi fare un banale LEFT JOIN

  3. #3
    Non si puo' valutare un campo prima di aver risolto il nome di una tabella. Se un campo e' NULL non ha molto senso sia indicizzato. Se != da NULL potrebbe anche essere empty e non saprei dire se in questo potrebbe servirti lo stesso (penso di no).

    Se hai piu' condizioni da valutare dovresti usare CASE ... THEN ... oppure IFNULL per una risposta per ogni campo mentre se il campo e' NULL verra' gia' scartatato nella INNER JOIN senza altri controlli.

    Se invece vuoi sempre i risultati della prima tabella usa LEFT JOIN.

    codice:
    SELECT table1.field1, table1.field2,
    IFNULL(table2.field1, table2.field1+1) as field2_1,
    IFNULL(table2.field2, table2.field2+1) as field2_2
    
    FROM table1
    
    LEFT JOIN table2 ON table1.fieldX = table2.id
    
    WHERE
    Ovviamente la query dovra' essere adeguata alla tua realta'. Attenzione che nomi uguali dei campi saranno sovrascritti dall'ultimo elencato. Quindi attento all'uso degli alias.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.