簡體   English   中英

PHP / MySQL-多項選擇查詢

[英]PHP/MySQL - Multiple Selects For Query

我正在編寫一個簡單的Musicians數據庫,該數據庫具有搜索功能,當音樂家在該數據庫中搜索特定樂器時,該電子郵件將通過電子郵件發送給人們。 我的人演奏的樂器多於一個樂器,因此我有5張桌子,樂器,樂器2,樂器3,樂器4,樂器5。

我在電子郵件功能上有一個MYSQL查詢,但無法搜索一個以上的表。

這是代碼:

$query = "SELECT * FROM instruments WHERE (instrument, instrument2, instrument3, instrument4, instrument5) = '$search'";

是我對語法感到愚蠢,還是我走錯路了。

非常感謝。

http://dev.mysql.com/doc/refman/5.0/en/multiple-tables.html

您應該只有一張表,其中包含字段工具和電子郵件。 看來這就是您想要的。

你有沒有嘗試過:

SELECT * 
FROM instruments 
WHERE '$search' IN (instrument, instrument2, instrument3, instrument4, instrument5)

我想這就是你想要的。

但是 ,真正的解決方案是使用儀器創建一個單獨的表,而不是為同一信息保留多列。

您應該有一張桌子,上面放着音樂家,一張桌子上放着樂器,用來存放通用樂器及其信息。 還有第三個(用於解決樂器與音樂家之間的多對多關系),僅包含音樂家ID和樂器ID。

這里有一些有用的鏈接:

最好使用2張桌子-音樂家和樂器。 “樂器”表中的每一行都有一個字段“ musician_id”,它引用相應的音樂家。 這稱為1-N關系。

現在,當您要查詢數據庫時,您可以執行以下操作:

SELECT * FROM musicians m LEFT JOIN instruments i ON (m.id = i.musician_id) WHERE i.name = "Oboe";

這將兩個表聯接在一起,一個人演奏的每種樂器都會返回給您一行。

或者,如果您已經知道音樂家ID,則僅查詢樂器:

SELECT * FROM instruments WHERE musician_id = 123;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM