搜尋

首頁  >  問答  >  主體

如何查詢儲存在資料庫中的多個選擇元素

查詢專業領域(儲存為任何選定項目陣列)無法運作。我正在嘗試找出一種在編輯時獲取註冊農民的專業知識領域的方法。

我有兩張桌子。資料庫中的登記農民表和專業領域表。

專業領域儲存在專業領域表中。

註冊農民表包含註冊農民的所有資料。

這是專業領域表:

area_of_expertise_id#id_number_of_the_farmer##areas_of_expertise##register_farmer_id
1 23232223 培養 1
2 23233453 收穫 2

註冊農民表:

register_farmer_id name_of_the_farmer age_of_the_farmer
1 無名氏 23
2 瑪麗·多伊 34

我想在專業領域表中擁有一個註冊農民 ID,就像在註冊農民表中一樣。我猜這將是一個外鍵。

我正在嘗試查詢某個農民的所有專業領域。查詢到的資料將顯示在其頁面上以供編輯。

將資料儲存在專業領域中效果很好。我使用 foreach 迴圈來儲存資料。現在的問題是查詢資料。

請幫忙。

P粉347804896P粉347804896265 天前475

全部回覆(1)我來回復

  • P粉060112396

    P粉0601123962024-04-05 12:46:13

    您可能需要過度考慮您的表格設計,因為這看起來像經典的 1:n 關係(即使是 1:1,訊息也不會改變)

    嘗試這樣:

    Farmers:
    ID (PRIMARY, AutoIncrement), name, age
    
    Expertises:
    farmerID (index), areaOfExpertise

    插入如下(假設準備好的語句):

    INSERT INTO `farmers` VALUES (NULL, ?, ?)`

    然後,您從活動連接中檢索「最後插入 ID」並將其放入第二個表中。

    INSERT INTO `expertise` VALUES (?, ?)

    要檢索訊息,您需要採取相反的方法。要檢索所有農民,您可以使用查詢

    SELECT * FROM `farmers`

    並且,要僅獲取特定農民(假設您有 ID),您可以使用:

    SELECT * FROM `farmers` WHERE ID = ?

    無論您是查看所有農民還是僅查看一個農民,在評估資訊時,您都將訪問以下專業領域:

    SELECT * FROM `expertise` WHERE farmerID = ?

    這就是它的全部內容。 假設是 1:1 的關係(如「每個農夫只有一個專業領域」),你也可以這樣一次寫出來:

    SELECT * FROM `farmers`, `expertise` WHERE ID = ? and farmerID = ID;

    回覆
    0
  • 取消回覆