2015-06-02 3 views
0

Я пытаюсь сделать несколько таблиц, где ID = variabile.Синтаксис MySQL ERROR на WHERE select

Пример кода ниже, я верю, что он должен работать, но каким-то образом у меня есть некоторая ошибка в синтаксисе.

SELECT c.id, c.firstname, c.surname, c.email, c.process, c.search_work, c.note, 
group_concat(DISTINCT ce.enforcement) as enfor, 
group_concat(DISTINCT cc.city) as city 
FROM candidates AS c 
LEFT JOIN candidates_language AS cl ON c.id = cl.candidates_id 
LEFT JOIN candidates_enforcement as ce on c.id = ce.candidates_id 
LEFT JOIN candidates_city as cc on c.id = cc.candidates_id 
GROUP BY c.id, c.firstname, c.surname, c.email 
WHERE c.id='8' 

Fiddle: http://sqlfiddle.com/#!9/25b1b/24

ОШИБКА: У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, используемого рядом с «WHERE id =»

Пожалуйста, есть шанс, что кто-то сможет перейти ко мне, что я делаю неправильно?

+4

WHERE должно быть до вашего оператора GROUP BY :) ГДЕ всегда перед группой, поскольку она фильтрует данные перед их сгруппировкой. Вы можете использовать HAVING после группы, чтобы сделать наоборот. –

ответ

3

Вы несовпадающие расположение между WHERE и GROUP BY пункта. WHERE предложение всегда должно быть указано до GROUP BY, поскольку предложение WHERE будет фильтровать набор данных на основе условия и на этом отфильтрованном наборе данных будет происходить группировка или GROUP BY. Так что в вашем запросе должно быть

WHERE c.id='8' 
GROUP BY c.id, c.firstname, c.surname, c.email 
+0

Эй, Рахул, спасибо за ответ, конечно, конечно, и вы получили THUMB UP для это от меня. Unfortuantely Nighthunter22 был первым, чтобы быть справедливым. Я отмечаю его ответ :) Спасибо за понимание – Andurit

+2

@Andurit Быть первым не всегда означает более качественный ответ. Лично я считаю, что ответ Рахула лучше объясняет проблему и решение. – AdamMc331

0

Это то, что вы ищете:

SELECT c.id, c.firstname, c.surname, c.email, c.process, c.search_work, c.note, 
group_concat(DISTINCT ce.enforcement) as enfor, 
group_concat(DISTINCT cc.city) as city 
FROM candidates AS c 
LEFT JOIN candidates_language AS cl ON c.id = cl.candidates_id 
LEFT JOIN candidates_enforcement as ce on c.id = ce.candidates_id 
LEFT JOIN candidates_city as cc on c.id = cc.candidates_id 
WHERE c.id='8' --where comes before the group by 
GROUP BY c.id, c.firstname, c.surname, c.email; 
+0

Ой, это просто? THANKS – Andurit

+0

Нет проблем, не стесняйтесь принять ответ, если он вам помог;) – Nighthunter22

+0

да, действительно, жду, пока он не позволит мне это сделать :) – Andurit

0

Вы получаете эту ошибку, потому что WHERE положение должно прийти до пункта GROUP BY как уже упоминалось. Я также хотел бы добавить ссылку на документацию для синтаксиса SELECT, в котором показан порядок предложений для оператора. Я кратко заказ для вас, и поставить скобки дополнительных пунктов:

SELECT 
FROM 
[WHERE] 
[GROUP BY] 
[HAVING] 
[ORDER BY] 
[LIMIT] 

На стороне записки, порядок статьи выполняются не то же самое, как они написаны. См. Это question, для получения дополнительной информации об этом.