我試圖在登錄表中從students_informations表和「用戶名,用戶名,用戶姓名」中同時獲得「學校名稱」的3個表。MySQL加入語法錯誤
我需要做的是獲取「用戶數據」,「學校數據」,然後通過在我的asc_to_school
表中使用user_id
和school_id
進行匹配。
這裏是我的schools_informations
表,我需要的學校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
表連接與學校這個用戶。
編輯
下面是最後一個查詢我有一個在SQL小提琴作品:
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 2014-08-28 23:14:30
這是一個學校作業嗎?你真的應該學習用更加標準的ansi-92格式編寫查詢......使用連接...你在這裏寫的東西很古老,很難閱讀......儘管如此,仍然有相同的功能。呃,你的別名也會增加混淆。否則...這看起來正確 – Twelfth 2014-08-28 23:16:48
@Telfelf對於他自己,我強烈鼓勵別名。它允許您創建有意義的表名而不會創建過度冗長的查詢。 – Barmar 2014-08-28 23:20:39