簡體   English   中英

MYSQL QUERY連接多個表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM