[英]MYSQL QUERY to join multiple tables
我正在尋找可以連接多個表的單個查詢。 查詢如下
SELECT
a.name as module_name,
a.id,
b.id as subject_id,
b.SUBJECT_name,
c.id as course_id,
c.course_name,
d.id as cordinator_id,
d.cordinator_name
FROM module_table a
LEFT JOIN subject_table b ON b.id = a.subject_id
LEFT JOIN course_table c ON c.id = a.course_id
LEFT JOIN cordinator_table d ON d.id = a.cordinator_ids
WHERE a.id = $somevalue
ORDER BY a.id DESC
`
上面的查詢產生錯誤,當我連接兩個表時,顯示正確
SELECT
a.name as module_name,
a.id,
b.id as subject_id,
b.SUBJECT_name
FROM module_table a
LEFT JOIN subject_table b ON b.id = a.subject_id
WHERE a.id = $somevalue
ORDER BY a.id DESC`
第一個表具有主題和課程表的所有外鍵,另外的主題表連接到具有公共ID列的協調器表。我想要模塊表中給出的ID的對應名稱。
最后一張表是我想要的查詢結果,可以從這里收集所需數據我的表結構如下
只能在一個主題中包含模塊,並且在每個課程中都可以包含該主題,每個主題都可以具有任意數量的我將其保留為JSON值的協調器
----------------------------------------------------------------------- MODULE TABLE _____________________________________________________ id | subject_id | course_id | cordinator_id | name ----------------------------------------------------------------------- COURSE TABLE __________________ id | course_name ----------------------------------------------------------------------- SUBJECT TABLE _________________________________________________ id | course_id | cordinator_id | SUBJECT_name ----------------------------------------------------------------------- CORDINATOR TABLE ______________________________________ id | cordinator_ids | cordinator_name Result TABLE ___________________________________________________________________________________________ id | module_name | subject_id | subject_name | course_id | course_name | cordinator_ids
我能夠通過LEFT Join成功地聯接兩個表,但是第三次報告了一個錯誤。
問題是您輸入錯誤,忘記了加入course_table。
這是正確的查詢:
SELECT
a.name as module_name,
a.id,
b.id as subject_id,
b.SUBJECT_name,
c.id as course_id,
c.course_name,
d.id as cordinator_id,
d.cordinator_name
FROM module_table a
LEFT JOIN subject_table b ON b.id = a.subject_id
LEFT JOIN course_table c ON c.id = a.course_id
LEFT JOIN cordinator_table d ON d.id = a.cordinator_id
WHERE a.id = $somevalue
ORDER BY a.id DESC
在這行上:
b.SUBJECT_name,
您必須在表subject_table模式中放入大寫的“ SUBJECT_name”。
而且您的查詢缺少此JOIN來允許您選擇course_table字段:
LEFT JOIN course_table c ON c.id = a.course_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.