2016-03-23 79 views
1

匹配值我已經建立了與多個表的客戶端工作正常維護的數據庫,但現在他們希望能夠得到報告和我無法跨2個表創建選擇語句。MySQL的跨越2個表選擇 - 只包括1行,如果在另一個

用戶可以搜索修復類型,開始/結束日期和地點......在2個日期(在同一個表中的所有持有)之間的修復類型的所有返回結果沒有問題,但對於不同類型的修復唐的表不存儲位置信息,該信息與車輛信息表中的信息相對應。

因此,對1臺我可以查詢類似:

SELECT fid from cm_repair where start_date >= '$date1' AND end_date <= '$date2' 

,並在其他表,我可以有:

SELECT id from cm_fleet where location='$loc' 

反正我有可以結合這些,這樣我只得到行id和fid匹配?

+2

您需要了解[JOIN](https://en.wikipedia.org/wiki/Join_%28SQL%29)s –

回答

0

您可以使用INNER JOIN

SELECT fid 
from cm_repair as t1 
join cm_fleet as t2 on t1.fid = t2.id and location='$loc' 
where start_date >= '$date1' AND end_date <= '$date2' 
0

檢查這個link

內,左,右聯接的是結合你可能需要在這裏表常用的選項。

Inner將引入兩個表中的所有有效行和所選列。實質上,如果您要加入的ID存在於一個表中,而不是另一個表中,則最終可能會出現空值列。

左右是類似的,因爲返回較少的數據(根據您的查詢和報表)中的比特在處理速度比內。本質上,它將返回左右表中所有有效的行和選定的列,但如果您加入的ID不在連接的另一側,那麼該行數據將不會返回,因此沒有空值。

0

謝謝,我們將嘗試所有這些 - 但是我們發現無論如何設置表格的方式存在缺陷,需要編輯以在修復表格中包含位置列,以便使搜索更容易以及。

+0

這不是真的被認爲是答案,而是作爲評論下的一個或全部給出的答案,或作爲您原始問題下的修改。如果其中一個答案解決了你的問題,你應該考慮接受答案。以下是http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work然後返回到此處,並使用勾號/複選標記執行相同操作,直至變爲綠色。這告訴社區,找到了解決方案。否則,其他人可能會認爲這個問題仍然存在,並且可能需要發佈(更多)答案。 –

相關問題