2010-04-30 120 views
0

我有以下表格:困難SQL查詢

TableA (id, tableB_id, tableC_id) 
TableB (id, expirationDate) 
TableC (id, expirationDate) 

我想要從表A的tableB.expirationDate和tableC.expirationDate下令所有結果。我怎樣才能做到這一點?

回答

3
select ta.* 
from TableA ta 
inner join TableB tb on ta.tableB_id = tb.id 
inner join TableC tc on ta.tableC_id = tc.id 
order by tb.expirationDate, tc.expirationDate 

更新:

如果你沒有得到所有的記錄,那麼你就需要使用left outer join

select ta.* 
from TableA ta 
left outer join TableB tb on ta.tableB_id = tb.id 
left outer join TableC tc on ta.tableC_id = tc.id 
order by tb.expirationDate, tc.expirationDate 
+0

結果集爲空。 – 2010-04-30 17:41:54

+0

@João:查看我的更新 – RedFilter 2010-04-30 17:52:36

0

你試過:

SELECT a.* FROM TableA a 
INNER JOIN TableB b on b.id = a.tableB_id 
INNER JOIN TableC c on c.id = a.tableC_id 
ORDER BY b.expirationDate, c.expirationDatetableB_id 
+0

結果集爲空。 – 2010-04-30 17:43:33

+0

OrbMan建議您可以嘗試使用'LEFT OUTER JOIN'到其他表格。否則,請提供每個表格的樣本數據。 – 2010-04-30 17:54:34

2

如果結果集與其他建議是空的,你確保表中的數據實際上正確地相互關聯?

你可以發佈每個表的一些示例行嗎?