簡體   English   中英

SQL查詢以從多個表中獲取結果

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

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