MySQL, ссылающийся на себя JOIN - PullRequest
0 голосов
/ 19 марта 2019

У меня есть две таблицы:

Customers (
    int(11) Id, 
    varchar(255) Name, 
    int(11) Referred_ID -- Referred_ID being reference to an Id field 
                        -- (no key on that field) and 
)

другая таблица:

Invoices (
    int(11) Id, 
    date Billing_date, 
    int(11) Customer_ID
)

Я хочу выбрать Id, Billing_date счета-фактуры И самое главное, клиентаName, на который ссылается этот клиент.

Теперь я могу выбирать идентификатор его реферера только с помощью запроса, подобного следующему:

SELECT Invoices.Id, Invoices.Billing_date, Customers.Name, Referred_ID
    FROM Invoices 
    INNER JOIN Customers ON Invoices.Customer_Id = Customers.Id;

Как мне изменить свой запрос, чтобы заменить егоReferred_ID по имени его владельца?

Кстати, это MySQL примерно с 2015 года.

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Вы можете использовать два раза клиентов, использующих псевдоним для присоединения к упомянутому

    SELECT Invoices.Id, Invoices.Billing_date, Customers.Name, Referred.Name 
    FROM Invoices 
    INNER JOIN Customers ON Invoices.Customer_Id = Customers.Id
    INNER JOIN Customers Referred on Referred.id =  Customers.Referred_ID;
0 голосов
/ 19 марта 2019

использовать таблицу клиентов дважды в соединении

 SELECT Invoices.Id, Invoices.Billing_date,
 c1.Name as customername,
c1.Referred_ID,
c2.Name as refername 
FROM Invoices INNER JOIN Customers c1 ON Invoices.Customer_Id = c1.Id
join Customers c2 on  c1.Id=c2.Referred_ID 
...