我有 4 张桌子:
- 人
- 工作
- 标题
- 部门
人员表
id | title_id | person | phone | email | dept_id | job_id
---+----------+--------+-------+-------+---------+-------
1 | 1 | some1 | 12345 | s@a.c | 2 | 3
...
其他表结构如下
id | ********
---+---------
假设表title有5条记录,表departments有5条记录,表jobs有5条job记录。
假设由 $search string = 6 in table persons 定义的合适记录;
当我执行下面的查询时,结果集有 5 x 5 x 5 x 6 = 750
记录,其中大部分是重复的。结果看起来像做排列。
$query = sprintf(
"SELECT *
FROM
persons p, titles t, departments d, jobs j
WHERE
p.person LIKE %s OR
p.phone LIKE %s OR
p.email LIKE %s AND
p.id=t.id AND
p.id=j.id AND
p.id=d.id",
$search, $search, $search
);
然后我尝试将条件更改如下:
$query = sprintf(
"SELECT *
FROM
persons p, titles t, departments d, jobs j
WHERE
p.person LIKE %s OR
p.phone LIKE %s OR
p.email LIKE %s AND
p.title_id=t.id AND
p.job_id=j.id AND
p.dept_id=d.id",
$search, $search, $search
);
这将返回相同的结果。我只想立即在结果集中获取标题本身而不是 title_id、工作本身而不是 job_id 和部门名称而不是 dept_id。
我究竟做错了什么?