2012-05-31 7 views
0

Я пытаюсь присоединиться к трем таблицам. Первая - это таблица групп, вторая из столяров и третья из пользователей. Логику я начинаю с id группы, а затем присоединяюсь к группе в joiners groupid. Наконец, поскольку мне нужны имена, а также идентификаторы, я вытаскиваю их из таблицы пользователей, присоединяя пользователей к userid. Но, увы, не работает. MYSQL бросает ошибку говоря «ошибку вблизи г„групп“, которые, как правило, означает, что перед этим Что я упускаюСинтаксис запроса соединения MYSQL

групп идентификатора |.? Название | Идентификатор_пользователь

столяры идентификаторов | GroupID | Идентификатор_пользователь

пользователей идентификатор | Firstname

$sql = "SELECT g.*,j.userid,u.firstname,u.id 
FROM 'groups' g 
LEFT JOIN 'joiners' j 
ON g.id = j.groupid 
LEFT JOIN 'users' u 
ON j.userid = u.id 
WHERE g.id = 22"; 
+0

Вы говорите, что он сообщает «ошибка около„группы“г», однако , в вашем SQL это, как представляется, «группы» g - вы недавно изменили имя таблицы «группа» на «группы»? Поскольку «группа» является зарезервированным словом, это будет плохой выбор для имени таблицы. –

+0

Это была опечатка. Поскольку это на тестовом сервере, я попробовал изменить имя поля и разницу. – user1260310

ответ

2

неоднозначные термины, такие как таблицы и столбцы должны быть экранированы с помощью обратно клещей:

$sql = "SELECT g.*,j.userid,u.firstname,u.id 
FROM `groups` g 
LEFT JOIN `joiners` j ON g.id = j.groupid 
LEFT JOIN `users` u ON j.userid = u.id 
WHERE g.id = 22 

Это предполагает, что остальную часть вашего запроса является правильным, потому что я не вижу конца вашей строки ;-)

+0

имена таблиц все экранированы обратными тиками. Вы рекомендуете мне избегать всех столбцов, как в «j.userid», «u.userid»? Я не вижу, что вы изменили в своей версии. Существует «точка с запятой в конце sql, иначе она бы породила другую ошибку. Все еще в убытке .... – user1260310

+0

нет, только« не подходит для экранирования таблицы », вместо этого используйте обратную ссылку (то же для столбцов) – Sebas

+0

Да, это была проблема, я думал, что тики были апострофами, а не обратными окнами. Я думал, что они были обратными шагами. Извините, не понял ваш ответ. Как бывший asp человек, как я ненавижу PHP-пунктуацию. Grrr. – user1260310

Смежные вопросы