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

    MYSQL - Query con if statement

    Buongiorno a tutti e grazie per l'aiuto che vorrete darmi.
    Tabella1 lista tutti gli utenti registrati (id,nome,cognome)
    Tabella2 lista per ogni meeting creato quali utenti sono stati invitati (id,evento,user)
    In tabella2 avrò dunque tante righe quanti sono gli utenti che sono stati invitati ad un meeting.
    Obiettivo: creare una query che mi elenchi tutti gli utenti di tabella1 e aggiunga una colonna valorizzata 1 o 0 a seconda se l'utente è stato invitato o meno all'evento.
    La query che ho disegnato:
    codice:
    SELECT DISTINCT utenti.id, IF (ANY((SELECT invitati.user FROM invitati 
    WHERE invitati.evento=19)=utenti.id),1,0) AS invitato 
    FROM utenti, invitati WHERE 1
    funziona solo se la query all'interno dello statement if ritorna un solo record (significa che in quel meeting ci sarà solo un partecipante). Esempio di risultato:
    ID INVITATO
    1 1
    2 0
    3 0
    4 0
    5 0
    6 0

    Non mi sovviene come fare se ho invitato più di una persona ad un meeting. In parole povere (per esempio) ad ottenere:
    ID INVITATO
    1 1
    2 0
    3 1
    4 0
    5 1
    6 0
    perchè ho inviato gli utenti 1,3 e 5.
    Grazie ancora per l'aiuto a tutti.
    Lelio

  2. #2
    ti basta usare una LEFT JOIN, così hai tutti gli utenti, non solo quelli coinvolti

  3. #3
    Vero... ovvio... cercavo di ricreare con un if quello che la left join fa da sola

    Grazie, birra virtuale pagata!

    L

  4. #4
    Originariamente inviato da leliofa
    Grazie, birra virtuale pagata!
    aiuto *reale*, birra *virtuale*

  5. #5
    eheheh... se sei della zona della regina Teodolinda si può rimediare!

    P.s. se mai dovesse servire a qualcuno, grazie al consiglio di optime la query che funziona è la seguente:
    codice:
    SELECT utenti.id as utente, if(isnull(inviti.evento),0,1) as invitato 
    FROM utenti LEFT JOIN (SELECT * FROM invitati where invitati.evento=19) AS inviti 
    ON utenti.id=inviti.user WHERE 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 © 2026 vBulletin Solutions, Inc. All rights reserved.