2012-05-09 15 views
5
SELECT * 
FROM Activity AA 
WHERE AA.act_id IN 
((SELECT A.act_id 
    FROM Activity A 
    WHERE A.user_id = 'lhfcws') 
UNION 
(SELECT J.act_id 
    FROM Joinin J 
    WHERE J.user_id = 'lhfcws')) 
ORDER BY AA.act_time 

MESSAGGIO DI ERRORE: # 1064 - Hai un errore nella sintassi SQL; controllare il manuale che corrisponde alla versione del server MySQL per la sintassi diritto di utilizzare vicino 'UNION (SELECT J.act_id FROM Joinin J WHERE J.user_id = 'lhfcws')) ORDE' at line 7Errore di sintassi in MySQL vicino UNION?

attività (act_id, user_id, act_name)
Joinin (act_id, user_id)

+0

possibile duplicato di [MySQL 3.23 UNION non riesce con Errore 1064] (http://stackoverflow.com/questions/9202667/mysql-3-23-union-fails-with-error-1064) – Makoto

+0

Questo duplicato non ha una risposta [accettata] soddisfacente; questo fa –

risposta

6

Il motivo per il vostro errore è le parentesi intorno alle istruzioni SELECT. Dovresti scriverlo come:

SELECT * 
FROM Activity AA 
WHERE AA.act_id IN 
(SELECT A.act_id 
    FROM Activity A 
    WHERE A.user_id = 'lhfcws' 
UNION 
SELECT J.act_id 
    FROM Joinin J 
    WHERE J.user_id = 'lhfcws') 
ORDER BY AA.act_time 

Ma ripassa le idee di Raphaël Althaus per migliorare la tua richiesta.

+0

capito! grazie per il tuo aiuto ~! – Lhfcws

2

Hmm, non lo fanno pensi di aver bisogno di un tale sottoquery

select * from Activity a 
where a.user_id = 'lhfcws' 
and exists (select null from Joinin j 
where a.user_id = j.user_id); 

Sould fare lo stesso

forse avete bisogno di uno più controllo

select * from Activity a 
    where a.user_id = 'lhfcws' 
    and exists (select null from Joinin j 
    where a.user_id = j.user_id 
    and a.act_id = j.act_id); 

di tronchi con al (vero) l'osservazione di @ Jonathan Leffler

select * from Activity a 
     where a.user_id = 'lhfcws' 
     or exists (select null from Joinin j 
     where j.user_id = 'lhfcws' 
     and a.act_id = j.act_id); 
+0

UNION è un OR; intendi O ESISTE? –

+0

oops, hai ragione, grazie, la terza versione sembra corretta per te? –

+0

wow ~! Funziona! grazie mille ~ ma mi chiedo ancora perché ho sbagliato ~~ – Lhfcws

Problemi correlati