【问题标题】:mysql select data from 3 tables using user inputmysql使用用户输入从3个表中选择数据
【发布时间】:2014-12-12 01:41:12
【问题描述】:

我有 3 个表格,其中包含以下列和值(它们有多个条目,但我只给你看一个):

protein

 +--------+------+-------------+
 | pdb_id | name | description |
 +--------+------+-------------+
 | 1AF6   | porin| maltoporin  |
 +--------+------+-------------+

organism:

 +--------+-----------------------+
 | org_id | organismName          |
 +--------+-----------------------+
 | 4      | Comamonas acidovorans |
 +--------+-----------------------+

protein_organism:

 +--------+--------+
 | pdb_id | org_id | 
 +--------+--------+
 | 1AF6   | 4      |
 +--------+--------+

我正在创建一个网站,人们可以在其中查看特定生物体的所有蛋白质,这些蛋白质可以从下拉菜单中选择。 但是,当我尝试获取数据时,浏览器会转到正确的 url:http://localhost:8084/response_organism?organismName=Comamonas+acidovorans 但什么也没显示。 这是我的 sql 命令:

query = "SELECT * FROM protein JOIN protein_organism ON protein_organism.pdb_id = protein.pdb_id JOIN organism ON organism.org_id = protein_organism.org_id WHERE organism.organismName="+po;    

po (string) 是从我的 index.jsp 表单中获取的用户输入

我的 sql 命令有什么问题?

【问题讨论】:

  • 我怀疑您在查询中缺少生物体名称周围的引号。如果您使用参数化查询,那将是固定的。或者,如果您在运行查询时检查错误,您会注意到该错误。

标签: mysql input


【解决方案1】:

您查询的方式错误。这是使用 JOIN 进行查询的正确方式。

"SELECT *
  FROM protein P
INNER JOIN protein_organism PO
  ON PO.pdb_id = P.pdb_id
LEFT JOIN organism O
  ON O.org_id = PO.org_id
WHERE O.organismName="+po;

如果您在运行时遇到错误或不同的结果,请对此查询进行适当的更改。

【讨论】:

    猜你喜欢
    • 2016-07-23
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    相关资源
    最近更新 更多