我正在编写一个简单的音乐家数据库,该数据库具有搜索功能,可以在搜索该数据库中的特定乐器时通过电子邮件向人们发送音乐人的详细信息。我有人玩多个乐器因此我有5个表,乐器,乐器2,乐器3,乐器4,乐器5。
我的电子邮件功能上有一个MYSQL查询,但我无法搜索多个表格。
以下是代码:
$query = "SELECT * FROM instruments WHERE (instrument, instrument2, instrument3, instrument4, instrument5) = '$search'";
我的语法是不是很愚蠢,或者我对此采取了错误的方法。
非常感谢。
答案 0 :(得分:0)
http://dev.mysql.com/doc/refman/5.0/en/multiple-tables.html
您应该只有一个包含字段工具和电子邮件的表。看来这就是你想要的一切。
答案 1 :(得分:0)
你试过了吗?
SELECT *
FROM instruments
WHERE '$search' IN (instrument, instrument2, instrument3, instrument4, instrument5)
?我认为这就是你想要的。
但一个真正的解决方案是使用仪器创建一个单独的表,而不是为相同的信息保留多个列。
你应该有一个有音乐家的桌子,还有一个带有乐器的桌子可以存放一般乐器及其信息。第三个(用于解决乐器和音乐家之间的多对多关系),只保存音乐家ID和乐器ID。
以下是一些有用的链接:
答案 2 :(得分:0)
最好使用2个表 - 音乐家和乐器。 Instruments表中的每一行都有一个字段'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;