Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对具有可接受空值的多个表执行联接_Php_Mysql_Sql - Fatal编程技术网

Php 对具有可接受空值的多个表执行联接

Php 对具有可接受空值的多个表执行联接,php,mysql,sql,Php,Mysql,Sql,我有多个表,正在尝试执行JOIN查询。 下面的代码可以正常工作,除非WHERE子句中的一列为NULL—我根本没有得到任何结果 我需要使用完全外部连接吗 请帮忙 SELECT tickets.*, tickets_statuses.name AS statusname, tickets_priorities.name AS priorityname, clients.name AS clientname, clients_locations.name AS

我有多个表,正在尝试执行
JOIN
查询。 下面的代码可以正常工作,除非WHERE子句中的一列为NULL—我根本没有得到任何结果

我需要使用完全外部连接吗

请帮忙

SELECT  tickets.*,

    tickets_statuses.name AS statusname,

    tickets_priorities.name AS priorityname,

    clients.name AS clientname,

    clients_locations.name AS clientlocationname,
    clients_locations.address AS clientlocationaddress,
    clients_locations.address2 AS clientlocationaddress2,
    clients_locations.city AS clientlocationcity,
    clients_locations.state AS clientlocationstate,
    clients_locations.zip AS clientlocationzip,
    clients_locations.country AS clientlocationcountry,

    clients_contacts.prefix AS clientcontactprefix,
    clients_contacts.firstname AS clientcontactfirstname,
    clients_contacts.middlename AS clientcontactmiddlename,
    clients_contacts.lastname AS clientcontactlastname,
    clients_contacts.title AS clientcontacttitle

FROM    tickets, tickets_statuses, tickets_priorities, clients, clients_locations, clients_contacts
WHERE   tickets.id = '$ticket_id'
    AND tickets_statuses.id = tickets.statusid
    AND tickets_priorities.id = tickets.priorityid
    AND clients.id = tickets.clientid
    AND clients_locations.id = tickets.clientlocationid
    AND clients_contacts.id = tickets.clientcontactid

首先,我想说的是,您想要摆脱
JOIN
的旧语法,并使用标准
JOIN。。。关于
语法

查询可能如下所示,但顺序和联接可能因所需的列而异。下面假设您总是希望在
票证中有一个项目,其他任何项目可能存在,也可能不存在:

SELECT  tickets.*,
        tickets_statuses.name AS statusname,
        tickets_priorities.name AS priorityname,
        clients.name AS clientname,
        clients_locations.name AS clientlocationname,
        clients_locations.address AS clientlocationaddress,
        clients_locations.address2 AS clientlocationaddress2,
        clients_locations.city AS clientlocationcity,
        clients_locations.state AS clientlocationstate,
        clients_locations.zip AS clientlocationzip,
        clients_locations.country AS clientlocationcountry,
        clients_contacts.prefix AS clientcontactprefix,
        clients_contacts.firstname AS clientcontactfirstname,
        clients_contacts.middlename AS clientcontactmiddlename,
        clients_contacts.lastname AS clientcontactlastname,
        clients_contacts.title AS clientcontacttitle
FROM tickets
LEFT JOIN tickets_statuses
    ON tickets.statusid = tickets_statuses.id
LEFT JOIN tickets_priorities
    ON tickets.priorityid = tickets_priorities.id
LEFT JOIN clients
    ON tickets.clientid = clients.id
LEFT JOIN clients_locations
    ON tickets.clientlocationid = clients_locations.id
LEFT JOIN clients_contacts
    ON tickets.clientcontactid = clients_contacts.id
WHERE tickets.id = '$ticket_id'

首先,我想说的是,您想要摆脱
JOIN
的旧语法,并使用标准
JOIN。。。关于
语法

查询可能如下所示,但顺序和联接可能因所需的列而异。下面假设您总是希望在
票证中有一个项目,其他任何项目可能存在,也可能不存在:

SELECT  tickets.*,
        tickets_statuses.name AS statusname,
        tickets_priorities.name AS priorityname,
        clients.name AS clientname,
        clients_locations.name AS clientlocationname,
        clients_locations.address AS clientlocationaddress,
        clients_locations.address2 AS clientlocationaddress2,
        clients_locations.city AS clientlocationcity,
        clients_locations.state AS clientlocationstate,
        clients_locations.zip AS clientlocationzip,
        clients_locations.country AS clientlocationcountry,
        clients_contacts.prefix AS clientcontactprefix,
        clients_contacts.firstname AS clientcontactfirstname,
        clients_contacts.middlename AS clientcontactmiddlename,
        clients_contacts.lastname AS clientcontactlastname,
        clients_contacts.title AS clientcontacttitle
FROM tickets
LEFT JOIN tickets_statuses
    ON tickets.statusid = tickets_statuses.id
LEFT JOIN tickets_priorities
    ON tickets.priorityid = tickets_priorities.id
LEFT JOIN clients
    ON tickets.clientid = clients.id
LEFT JOIN clients_locations
    ON tickets.clientlocationid = clients_locations.id
LEFT JOIN clients_contacts
    ON tickets.clientcontactid = clients_contacts.id
WHERE tickets.id = '$ticket_id'

首先,我想说的是,您想要摆脱
JOIN
的旧语法,并使用标准
JOIN。。。关于
语法

查询可能如下所示,但顺序和联接可能因所需的列而异。下面假设您总是希望在
票证中有一个项目,其他任何项目可能存在,也可能不存在:

SELECT  tickets.*,
        tickets_statuses.name AS statusname,
        tickets_priorities.name AS priorityname,
        clients.name AS clientname,
        clients_locations.name AS clientlocationname,
        clients_locations.address AS clientlocationaddress,
        clients_locations.address2 AS clientlocationaddress2,
        clients_locations.city AS clientlocationcity,
        clients_locations.state AS clientlocationstate,
        clients_locations.zip AS clientlocationzip,
        clients_locations.country AS clientlocationcountry,
        clients_contacts.prefix AS clientcontactprefix,
        clients_contacts.firstname AS clientcontactfirstname,
        clients_contacts.middlename AS clientcontactmiddlename,
        clients_contacts.lastname AS clientcontactlastname,
        clients_contacts.title AS clientcontacttitle
FROM tickets
LEFT JOIN tickets_statuses
    ON tickets.statusid = tickets_statuses.id
LEFT JOIN tickets_priorities
    ON tickets.priorityid = tickets_priorities.id
LEFT JOIN clients
    ON tickets.clientid = clients.id
LEFT JOIN clients_locations
    ON tickets.clientlocationid = clients_locations.id
LEFT JOIN clients_contacts
    ON tickets.clientcontactid = clients_contacts.id
WHERE tickets.id = '$ticket_id'

首先,我想说的是,您想要摆脱
JOIN
的旧语法,并使用标准
JOIN。。。关于
语法

查询可能如下所示,但顺序和联接可能因所需的列而异。下面假设您总是希望在
票证中有一个项目,其他任何项目可能存在,也可能不存在:

SELECT  tickets.*,
        tickets_statuses.name AS statusname,
        tickets_priorities.name AS priorityname,
        clients.name AS clientname,
        clients_locations.name AS clientlocationname,
        clients_locations.address AS clientlocationaddress,
        clients_locations.address2 AS clientlocationaddress2,
        clients_locations.city AS clientlocationcity,
        clients_locations.state AS clientlocationstate,
        clients_locations.zip AS clientlocationzip,
        clients_locations.country AS clientlocationcountry,
        clients_contacts.prefix AS clientcontactprefix,
        clients_contacts.firstname AS clientcontactfirstname,
        clients_contacts.middlename AS clientcontactmiddlename,
        clients_contacts.lastname AS clientcontactlastname,
        clients_contacts.title AS clientcontacttitle
FROM tickets
LEFT JOIN tickets_statuses
    ON tickets.statusid = tickets_statuses.id
LEFT JOIN tickets_priorities
    ON tickets.priorityid = tickets_priorities.id
LEFT JOIN clients
    ON tickets.clientid = clients.id
LEFT JOIN clients_locations
    ON tickets.clientlocationid = clients_locations.id
LEFT JOIN clients_contacts
    ON tickets.clientcontactid = clients_contacts.id
WHERE tickets.id = '$ticket_id'

加入。。。ON
语法有意义!谢谢。
加入。。。ON
语法有意义!谢谢。
加入。。。ON
语法有意义!谢谢。
加入。。。ON
语法有意义!谢谢