Что не так с этим запросом UNION ALL MySQL? - PullRequest
0 голосов
/ 27 марта 2011
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

дизайн базы данных:

  • Вопросы {ID, user_id, вопрос, дата}
  • ответы {идентификатор, question_id, user_id, ответ, дата}

ошибка:

1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с «ГДЕ user_id = 39 ORDER BY date DESC

Ответы [ 4 ]

2 голосов
/ 27 марта 2011

В нижней части запроса есть два WHERE-предложения. Вам нужно буквально удалить только последнее слово ГДЕ. Описание ошибки - это все, что вам нужно.

1 голос
/ 27 марта 2011

Как ошибка пытается объяснить: для второго выбора вам нужно поставить только один "ГДЕ".

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
1 голос
/ 27 марта 2011

Был дополнительный, где a.user_id = 39. Вы используете только ключевое слово WHERE в начале предложения (a.question_id = q.id AND 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 голос
/ 27 марта 2011

«ГДЕ» появляется дважды. Где х = ..... а ....

...