簡體   English   中英

用可接受的NULL值對多個表執行JOIN

[英]Perform JOIN on multiple tables with acceptable NULL value

我有多個表並嘗試執行JOIN查詢。 除了WHERE子句中的一列為NULL時,以下代碼可以正常工作-我什么都沒有得到。

我需要使用FULL OUTER 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, 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 ... ON語法。

該查詢可能看起來像這樣,盡管順序和連接可能會根據所需的列而有所不同。 以下假設您始終希望在ticket包含某項物品,而其他任何物品可能存在也可能不存在:

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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM