我有两个变量$code
和$name
。 $code probably have tutor's code or institute's code and
$ name也可能有导师姓名或学院名称。
这就是名称来$code
和$name
// Check Tutor or Institute
if ( $tutorCode && $tutorName) {
$code = $tutorCode;
$name = $tutorName;
} elseif ( $instituteCode && $instituteName) {
$code = $instituteCode;
$name = $instituteName;
}
我的问题是我需要根据此contact
和$code
从$name
表中获取电子邮件地址。需要检查属于代码和名称的两个表tutor
和institute
。
tutor
和institute
表格contact_id
和contact
表格也有contact_id
。
tutor
表格包含tutor_code
和tutor_name
institute
表格包含institute_code
和institute_name
我试过这样的事情。但无法检查两个表格。
$q = "SELECT email FROM tutor
WHERE tutor_code = $code AND tutor_name = $name"
希望有人能帮助我。 谢谢。
答案 0 :(得分:3)
你可以UNION
两个表
<击> 撞击>
<击>SELECT email, code, name
FROM
(
SELECT email, tutor_code as code, tutor_name as Name FROM tutor
UNION ALL
SELECT email, institute_code as code, institute_name as Name FROM institute
) sub
WHERE code = $code AND
name = '$name'
击> <击> 撞击>
或
SELECT s.*, c.*
FROM
(
SELECT contact_ID,
tutor_code as code,
tutor_name as Name,
'TUTOR' sourceTbl
FROM tutor
WHERE tutor_code = $code AND
tutor_name = '$name'
UNION ALL
SELECT contact_ID,
institute_code as code,
institute_name as Name,
'INSTITUTE' sourceTbl
FROM institute
WHERE institute_code = $code AND
institute_name = '$name'
) s
INNER JOIN contact c
ON s.contact_ID = c.contact_ID
请注意,如果两个表上都存在两条记录,则会返回重复记录,因为ALL
中指定了UNION
。如果您只想获取唯一记录,请删除ALL
。
答案 1 :(得分:0)
查看您的查询我注意到$ code和$ name值存在问题。 你需要在双引号或单引号中添加$ code和$ name。
答案 2 :(得分:0)
你应该阅读使用mysql中的连接。
http://dev.mysql.com/doc/refman/5.0/en/join.html
对于研究所和导师部分,您可以使用UNION或加入。 在你的情况下,它看起来像这样:
$q = "SELECT c.email
FROM contact c
LEFT JOIN tutor t on t.contact_id = c.contact_id
LEFT JOIN institute i on i.contact_id = c.contact_id
WHERE
(
(t.tutor_code = $code AND t.tutor_name = $name) OR
(i.institute_code = $code AND i.institute_name = $name) OR
)";