2012-11-12 59 views
2

我有一個查詢到我的MySQL數據庫,返回來自MySQL表(信息)的四個字段的信息,然後使用PHP的json_encode()函數對JSON進行編碼。它返回的兩個字段是「staffMember」和「lineManager」,它返回與(獨立)用戶表中該人的ID相關的整數。將單獨查詢的結果添加到JSON編碼數組

我的查詢將返回以下(以表格形式):

id is 1 
staffMember is 14 
lineManager is 12 
description is this is a description 

等所有行。

14(在上面的例子中)是指在用戶表中的行會是這樣的:

id is 14 
firstname is dave 
secondname is jones 

所以我的問題是,我怎麼能得到的JSON的一部分查詢返回「戴夫瓊斯」,而不是14?由於信息不在MySQL的同一張表中。

+0

更改您的查詢(可能是某種連接)。你可以在這裏發佈,所以我們可以幫你嗎? –

+0

谷歌「SELECT JOIN MYSQL」 – dda

回答

0

使用LEFT JOIN在你的數據庫請求喜歡

SELECT a.id, CONCAT(b.firstname, ' ', b.secondname) AS staffMember, a.lineManager, a.description 
    FROM a 
    LEFT JOIN b ON (a.staffMember = b.id) 

其中a和b - 你的表名

+0

這真棒 - 完美的作品 - 非常感謝你的幫助。 – user1818517

+0

如果我想延長這一點,以便同時爲線管理器整數(也就是引用相同的用戶表)重複相同的過程是可實現的嗎?我知道你不能有兩個左連接到同一個表,但不同的領域..也許某種聯盟查詢?這有點超出我,但我會非常感謝你可以提供任何幫助.. – user1818517

+0

你可以使用兩個左連接,沒問題。 – Ziumin

0

正如評論者提到的,你一定要在名字和姓氏字段添加到您的SQL結果集。你可以通過改變你的查詢來加入你的名字和姓氏數據表。您的連接的「ON」子句將是兩個表共有的ID。一個例子是:

SELECT * FROM yourdb.table1 T1 LEFT JOIN yourdb.table2 T2 ON T1.staffMember = T2.id; 
相關問題