-1

我有两个变量$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。需要检查两个表tutorinstitute分别属于代码和名称。

tutorinstitute表有contact_idcontact表也有contact_idtutor表有tutor_codetutor_name
institute表有institute_codeinstitute_name

我尝试过这样的事情。但不能检查两个表。

$q = "SELECT email FROM tutor 
      WHERE tutor_code = $code AND tutor_name = $name"

希望有人能帮助我。谢谢你。

4

3 回答 3

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

请记住,如果由于ALLUNION. 如果您只想获取唯一记录,请删除ALL.

于 2013-05-03T08:10:27.577 回答
0

查看您的查询,我注意到 $code 和 $name 值存在问题。您需要在双引号或单引号内添加 $code 和 $name。

于 2013-05-03T08:09:16.900 回答
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
      )";
于 2013-05-03T08:09:17.883 回答