我遇到了一個難以找到解決方法的問題。我正在和MySQL一起工作,看看它是否適合我工作的公司,到目前爲止我對它的能力感到非常興奮。然而,我遇到了一個障礙,我希望有人能幫助我!MySQL根據來自第二個表的匹配信息從表中選擇信息
我在我的數據庫中有兩個表格,一個用於承包商,另一個用於貸款號碼。我的承包商表格中保存着他們的姓名,聯繫方式以及他們願意從事的工作領域等信息。這些區域由(縣,州)格式化,並且如果有多個,則它們如下分開:
Anne Arundel,MD; Baltimore,MD; Calvert,MD;
但是,有些承包商願意在整個州進行工作。還有另一列標記爲這種情況的狀態,它的格式如下:
VA; OH; PA;
我的貸款表包含一個貸款編號,像上面這樣的(縣,州)(但是對於任何給定的貸款只有一個入口)以及第三個狀態列是多餘的並且可能被取出。
我一直在寫一個程序來管理我們所有的承包商和貸款編號,我需要能夠生成一個可用於任何給定貸款編號的承包商列表。以下是我迄今爲止使用的查詢:
SELECT first_name, last_name FROM contractors INNER JOIN loans ON contractors.county_state LIKE CONCAT('%', loans.county_state, ';%') WHERE loans.loan_number = <LOAN NUMBER GOES HERE>
這很好用,但它無法匹配覆蓋整個州的承包商。我如何在其中放置類似於OR條款的內容,其中包括全州覆蓋承包商?
OR contractors.states LIKE CONCAT('%', loans.state, ';%')
是這樣的可能嗎?還是我必須改變方向?
在此先感謝您的幫助!
是的,好像你可以像這樣做'OR',但要小心你需要用分號來跟隨州名。在你的第二份列表(VA; OH; PA)中,沒有尾隨的分號。您最好將這些狀態作爲離散記錄存儲在單獨的關係表中。 – Marc
@Marc其實,那裏應該有另一個尾隨的分號。我沒有意識到我排除了它!我會繼續測試它。似乎我在嘗試時遇到了一些錯誤,儘管...... OR子句只是坐在查詢的最後? – Typhon01
我建議你正確地規範你的數據庫設計,將承包商的狀態轉移到每個承包商/州一行的單獨表格中 – Kickstart