0

私はこの種のことをしたいと思います:

 IF ((19, 13) NOT IN (select idUtente, IdLezione from partecipa)) THEN
 insert into partecipa 
 (IdUtente, IdLezione, 
 IdAbbonamento, 
 utente,
  prova, riserva) 
 values( 
 19, 13, 
 (select idAbbonamento from abbonamento where attivo=1 and idUtente=19), 
 (select concat(u.nome," ",u.cognome) from abbonamento as a, utente as u where      a.attivo=1 and a.idUtente=u.idUtente and u.idUtente=19),
  0, 0)
 end if;

しかし、構文にエラーがあります

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF ((19, 13) NOT IN (select idUtente, IdLezione from partecipa)) THEN insert int' at line 1    0.000 sec 

そしてインターネット上で私は解決策を見つけることができません。誰かが私を助けることができますか?

4

1 に答える 1

2

これを試して:

INSERT INTO partecipa (IdUtente, 
                       IdLezione, 
                       IdAbbonamento, 
                       utente,  
                       prova, 
                       riserva)
SELECT 
  19, 
  13, 
  ab.idAbbonamento,  
  concat(u.nome, ' ', u.cognome), 
  0, 
  0
FROM abbonamento       AS ab 
INNER JOIN abbonamento AS a  ON ab.attivo   = a.attivo 
                            AND ab.idUtente = a.idUtente
INNER JOIN utente      AS u  ON a.idUtente  = u.idUtente 
WHERE a.attivo   = 1
  AND u.idUtente = 19
  AND NOT EXISTS(SELECT 1 
                 FROM partecipa 
                 WHERE idUtente  = 19 
                   AND IdLezione = 13);
于 2013-02-19T14:42:30.370 に答える