2013-07-25 56 views
1

我有一個有效的SQL查詢,但我需要從查詢中的第三個表中獲取另一個數據以便於使用,但一直無法抓住它。加入三個SQL表?

每個表基本上是由tenant_id

綁在一起(我的壞結構道歉,我沒有創建的DB)

表:tenant_statements

tenant_id        餘額       財產       日期

表:租賃

lease_id         tenant_id        財產        unit_number

表:租戶

tenant_id         FIRST_NAME        姓氏        global_comment

我當前的查詢:

SELECT * 
FROM tenant_statements t 
INNER JOIN (
SELECT * 
FROM leases 
GROUP BY tenant_id 
ORDER BY lease_id 
)l ON t.tenant_id = l.tenant_id 
WHERE t.date = '$date' 
AND t.property = '$property' 
ORDER BY t.balance DESC 

這給予的我要加入兩個表適當的響應:leasestenant_statements$date$property通過PHP變量循環設置並用於演示。

我試圖做的也是抓住tenants.global_comment,並添加了每個結果。

理想輸出將是:

tenant_statements噸:t.balance,t.date

租賃升:l.property,l.unit_number

租戶X:x.first_name中,x .last_name,x.global_comment

全部在一個查詢中。

任何人都可以指向正確的方向嗎?謝謝!

+0

只要有可能,最好避免select語句的通配符('SELECT * ...') – rfk

回答

1

如何像

SELECT * 
FROM tenant_statements t INNER JOIN 
     (
      SELECT * 
      FROM leases 
      GROUP BY tenant_id 
      ORDER BY lease_id 
     )l ON t.tenant_id = l.tenant_id INNER JOIN 
     tenants ts ON t.tenant_id = ts.tenant_id 
WHERE t.date = '$date' 
AND  t.property = '$property' 
ORDER BY t.balance DESC 
0

雖然每個加盟規格的連接只兩個表,FROM子句可以包含多個規格的加入。這允許爲單個查詢連接多個表。

SELECT t.tenant_id, 
t.balance, 
l.unit_number, 
l.property 
x.first_name, x.last_name, x.global_comment 


fROM tenant_statements t 
    INNER JOIN leases l ON l.tenant_id = t .tenant_id 
    INNER JOIN tenants x on x.tenant_id = t.tenant_id