2011-03-27 4 views
0
SELECT 'Q' AS TYPE, 
     q.question AS value, 
     q.date 
    FROM questions q 
WHERE q.user_id =39 
UNION ALL 
SELECT 'A' AS TYPE, 
     q.question AS value, 
     a.date 
    FROM answers a, 
     questions q 
WHERE a.question_id = q.id 
    AND WHERE a.user_id =39 
ORDER BY `date` DESC 
conception de base de données

:quel est le problème avec cette requête UNION ALL mysql?

  • question {id, user_id, question, date}
  • réponses {id, question_id, user_id, réponse, date}

erreur:

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 'WHERE a . user_id = 39 ORDER BY date DESC

+0

Le mot-clé 'WHERE' est utilisé une seule fois par instruction SELECT. Supprimez le doublon et votre requête fonctionnera. –

Répondre

2

Il existe deux clauses WHERE dans la partie inférieure de la requête. Vous devez littéralement supprimer le dernier mot O WH. La description de l'erreur est tout ce dont vous avez besoin.

1

"WHERE" apparaît deux fois. Où x = ..... ET ....

1

Avait un extra où a.user_id = 39. Vous utilisez uniquement le mot-clé où, au début de la clause (a.question_id = q.id ET a.user_id = 39)

SELECT 
'Q' AS TYPE , q.question AS value, q.date 
FROM questions q 
WHERE q.user_id =39 
UNION ALL 
SELECT 'A' AS TYPE , q.question AS value, a.date 
FROM answers a,questions q 
WHERE a.question_id = q.id 
AND 
a.user_id =39 
ORDER BY `date` DESC 
1

Comme l'erreur tente d'expliquer: Pour le deuxième, vous choisissez seulement besoin de mettre un "O WH".

SELECT 'A' AS TYPE , q.question AS value, a.date 
FROM answers a,questions q 
WHERE a.question_id = q.id 
AND 
a.user_id =39 
Questions connexes