【发布时间】:2014-04-21 15:41:23
【问题描述】:
我想做的是这样的:
首先有一个有 5 个输入的表单,例如:
Name:
Career:
Experience:
City:
Speciality:
我需要做的是根据填写的字段创建一个sql语句。如果只填写了 2 个字段,则创建一个仅包含这些字段的 sql。除了为每种可能性创建一个 sql 语句之外,我不知道如何做到这一点,结果证明这是一项相当广泛的工作。我读到我可以使用存储过程,但我又不知道该怎么做。请帮帮我!
抱歉,如果我没有详细说明问题。
这是我在 mysql 数据库中有不同表的交易
- 人
- person_id
- 姓名
- 姓氏
- person_courses
- person_id
- 课程
- person_carrer
- person_id
- 承运人
- person_experience
- person_id
- 位置
- experience_description
- experience_from_date
- experience_to_date
所有这些表都通过foreign_key(person_id)与人相关
然后我有一个页面,用户有 6 个不同的输入:
- 姓名:
- 姓氏:
- 课程:
- experience:(此字段从表 person_experience 中搜索 position 和 experience_description)
- 古代:(必须获得所有person_experience的总结)
用户必须根据自己填写的字段获取结果。
我试图做的是像这样使用“%%”创建一个复杂的 SQL 语句
select a.person_id, b.name, c.last_name, d.courses, f.experience, g.antiquity
from person a,
(
'SQL SENTENCE' WHERE NAME LIKE "%%"
) b,
(
'SQL SENTENCE' WHERE LAST_NAME LIKE "%%"
) c,
(
'SQL SENTENCE' WHERE COURSE LIKE "%%" GROUP BY PERSON_ID
) d,
(
'SQL SENTENCE' WHERE POSITION LIKE "%%" OR EXPERIENCE_DESCRIPTION LIKE "%%"
GROUP BY PERSON_ID
) f,
(
'SQL SENTECE'
WHERE 'SUMATORY OF ALL PERSON EXPERIENCE, (TO_DATE - FROM_DATE)/365 '>=0 (THIS ZERO WOULD CHANGE IF USER FILLS INPUT ANTIQUITY)
GROUP BY PERSON_ID
) g
WHERE a.person_id = b.person_id and c.person_id = b.person_id and d.person_id = c.person_id and f.person_id = d.person_id and g.person_id = f.person_id
如果用户填写任何字段,我只需将值放在“%value%”之间,这样我就可以得到结果,并且我会用这个 sql 语句得到结果,但问题是,如果一个人没有experience or carrer 它没有显示在结果中,所以我需要某种方式,正如我首先所说的,只需根据用户填写的输入在数据库中搜索即可。
例如,如果用户填写:
- carrer, experience:搜索所有拥有该carrer 和该经验的人。
- 姓名:搜索所有人,即使他们没有使用该姓名的培训、课程或经验
PS:尝试为每个可能性创建一个 sql 语句将导致 64 个 sql 语句,我不考虑这样做!
提前感谢所有帮助
【问题讨论】:
-
您遇到了什么问题?表格? PHP? DB表设计?您在这里没有展示足够具体的流程,我们无法为您提供具体帮助。
标签: javascript php mysql sql