我有一組名爲 計劃, GROUP, 產品 CLIENT有條件加入 - 加入1和表2的方式
大多數有聯動即 計劃(不是很好正火或關係)表 - >客戶端clno GROUP to PRODUCT on PRODCD
但是,PLAN和GROUP之間的聯繫非常棘手。一個計劃有2個感興趣的領域GRPNO和PRODCD。
我想要做的是,如果GRPNO!= 0,那麼在GRPNO上加入GROUP。但是,如果GRPNO = 0,那麼我想加入PRODCD上的GROUP。
令人沮喪的是,我想在我的查詢中返回的文件是相同的,我只需要能夠改變連接或兩次加入同一個表。
我能想出最好的是2個查詢,並使用數據集合並它們,或者可能使用聯合。
是否有一個很好的方式來做到這一點在一個選擇?
我應該指出我是通過ODBC訪問Foxpro來做到這一點的。
謝謝!
如果你使用'UNION',你可以在一個查詢中有效地完成它們,這是一個非常有效的解決方案。請注意,如果Foxpro支持它,你也可以嘗試一個條件連接;例如,http://stackoverflow.com/questions/10256848/can-i-use-case-statement-in-a-join-condition。 – dash
我曾經讀過一個聯盟會導致2次通過表 - 從而影響性能。我目前正在關注Group的內部選擇。 –
您可以使用'UNION ALL',因爲您可以確信這些集合不會重疊,因此不需要區分。此外,如果您運行UNION ALL查詢,並且速度很快,那麼這足夠好嗎?通常稍後優化會更好:-) – dash