Я пытаюсь присоединиться к 3 таблицам одновременно, чтобы получить «School Name» из таблицы school_informations и «User ID, User Name, User Surname» из таблицы входа.MySQL присоединяется к ошибке синтаксиса
Вещь, которую мне нужно сделать, это получить «данные пользователя», «данные школы» и сопоставить с помощью user_id
и school_id
в моей таблице asc_to_school
.
Вот мой schools_informations
стол, который я должен взять на себя school_id и сопоставить его в asc_to_schools
таблице и schools_name
для отображения в качестве выходных (переменных $):
id | school_id | school_name | school_type | type | la_name | region
----+-----------+-----------------+-----------------+------+-----------------+--------
1 | 8432627 | Glasgow Gaelic | Local Authority | Both | Glasgow City | WE
2 | 5349834 | Breadalbane | Local Authority | Both | Perth & Kinross | TF
3 | 7235142 | ForestFortres | Local Authority | Both | undefined | WE
Вот мой Логин таблица:
id | username | pass | region | la | name | surname | role
----+----------+------+--------+------------------+-------+---------+------
1 | Can | **** | none | Clackmannanshire | Can | Sinal | ASC
2 | Tumer | **** | none | Argyll & Bute | Tumer | Kologlu | GM
3 | Kerem | **** | none | Somethingelse | Kerem | Citak | ADM
4 | Pelin | **** | none | Somethingelse | Pelin | Karahan | GM
5 | Irem | **** | none | Somethingelse | Irem | Sevinc | CC
Наконец мой asc_to_school
таблица выглядит следующим образом:
user_id | school_id
---------+-----------
1 | 1
2 | 1
3 | 2
4 | 2
5 | 3
Вот запрос я пробовал:
SELECT
u.id, u.name, u.surname, u.role,
c.user_id, c.school_id,
s.school_id,s.school_name
FROM login u, asc_to_school c, school_informations s
WHERE u.role = 'ASC' AND c.user_id = u.id AND c.school_id = s.id
Как вы можете догадаться SQL возвращается пустой результат ... Я искал для этого и нашел этот пример (запрос я пытался в другой вопрос), но оно не работа для меня.
Как я могу получить: Только пользователи с «ролью» = «ASC» и подключить этот пользователь со школой, используя asc_to_school
таблицу.
EDIT
Вот последний запрос я есть, который работает в SQL Fiddle:
SELECT
u.id, u.name, u.surname, c.school_id,
s.school_id,s.school_name
FROM login u, asc_to_school c, school_informations s
WHERE u.role = 'ASC' AND c.user_id = u.id AND c.school_id = s.id
И вот результат:
object(mysqli_result)#3 (5) {
["current_field"]=>
int(0)
["field_count"]=>
int(5)
["lengths"]=>
NULL
["num_rows"]=>
int(0)
["type"]=>
int(0)
}
Ваш запрос выглядит хорошо (за исключением того, что неявные объединения являются архаичными, вы должны использовать явные предложения 'JOIN'). Он возвращает результат для меня: http://www.sqlfiddle.com/#!2/8e9c3c/1 – Barmar
Это школьное задание? Вы действительно должны учиться писать запросы в гораздо более стандартном формате ansi-92 с помощью объединений ... то, что вы пишете здесь, очень старое и трудно читаемое ... все равно действует одинаково. Хех, ваше сглаживание добавляет путаницу. В противном случае ... это выглядит правильно – Twelfth
@Twelfth Каждому свое, я настоятельно рекомендую aliasing. Он позволяет иметь значимые имена таблиц, не создавая слишком многословных запросов. – Barmar