簡體   English   中英

如何合並來自多個表的結果?

[英]How do I combine results from more than one table?

我要桌子:城市和客戶

城市:citys_id,citys_name

  1. 紐約
  2. 阿姆斯特丹
  3. 巴黎
  4. 米蘭
  5. 等等

客戶:具有個人信息的列,但會導入以下兩列:plac_of_residence_id和place_of_birth_id。 這兩列包含與城市不同的值。 例如:

  1. client_id:1
  2. client_name:約翰
  3. client_sex:m
  4. plac_of_residence_id:3(城市ID)
  5. place_of_birth_id:1(city_id)

我如何從餐桌城市獲得兩個不同的價值?

我的sql語句如下:

SELECT * FROM clients C LEFT JOIN cities C ON C.plac_of_residence_id = C.cities_id AND place_of_birth_id = C.cities_id WHERE C.client_id = $client_id";

我獲得的plac_of_residence_id和place_of_birth_id的城市名稱相同,而不是兩個不同的城市

我如何獲得輸出:巴黎和紐約?

你應該兩次參加城市

"SELECT C.*, a.*, b.* FROM clients C 
LEFT JOIN cities a ON C.plac_of_residence_id = a.cities_id 
LEFT JOIN cities b on  c.place_of_birth_id = b.cities_id 
WHERE C.client_id = $client_id";

不必在語句中使用AND,而必須使用OR:

SELECT * FROM clients C LEFT JOIN cities C ON C.plac_of_residence_id = C.cities_id OR place_of_birth_id = C.cities_id WHERE C.client_id = $client_id";

這是因為您要同時擁有:出生城市和當前居住地。 在上面的示例中:

對於John,如果城市表中的當前行為否,則加入要求(您的“ ON”部分)應評估為true。 3或沒有 1,因為John與兩個條目都有關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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