[英]SQL Query to get result form multiple tables
我的兩個表t1和t2之間有許多關系。 我試圖從屬於t2的t1中獲得結果,我可以通過簡單的聯接來獲取結果,但我也想獲取與該t1行具有關系的所有t2記錄。
我會將想要的結果轉換為json,以更好地理解:
[
{
"name": "t1.1",
"t2s": [
{
"name": "t2.1"
},
{
"name": "t2.2"
}
]
},
{
"name": "t1.2",
"t2s": [
{
"name": "t2.1"
},
{
"name": "t2.3"
}
]
}
]
更新:這是我當前的查詢,它向我返回關系的數據,但我也希望獲得與t1有關系的所有t2記錄。
select t1.name,t2.name
from t1
join t1_t2 as t1t2
on t1t2.id=t1.id
where t1t2.id = '10'
我希望我明白目標就在這里。 如果您嘗試為某個t1_t2
行提取t1.name
和t2.name
,則以下查詢將執行此操作:
SELECT t1.name, t2.name
FROM t1_t2
JOIN t1
on t1_t2.t1_id = t1.id
JOIN t2
on t1_t2.t2_id = t2.id
WHERE t1_t2.id = 10
在這里,我只是加入id相等的t1
,而不是加入t2
。 如果這就是您所需要的,那就非常簡單了。
另一方面,如果您希望所有與t1
相關聯的t2.name
,只需更改WHERE
:
WHERE t1.id = 10
這將使您獲得與t1行相關聯的所有行。
我可能會建議使用其他更簡單的表結構:
t1:
id
t1_t2_id
name
t2:
id
t1_t2_id
name
t1_t2:
id
看,這里我使兩個表指向多對多表。 然后,您可以完全跳過t1_t2表,然后說:
SELECT t2.name FROM t2
JOIN t1
ON t1.t1_t2_id = t2.t1_t2_id
WHERE t1.id = 10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.