У меня есть три таблицыОбъединение нескольких таблиц в MYSQL с ошибкой (
phoneRecord - ID,phone
companies - ID,phone1,phone2, name
contacts - ID, phone1, phone2, companies.ID
Я хочу присоединиться таблицы записи телефонных разговоров для компаний и контактов, из которых я могу сделать так, со следующим:
SELECT
phoneRecord.*,
companies.ID,
contacts.ID,
FROM phoneRecord
LEFT JOIN contacts
ON phoneRecord.Phone=contacts.Phone1 OR phoneRecord.Phone=contacts.Phone2
LEFT JOIN companies ON phoneRecord.Phone=companies.phone1 OR phoneRecord.phone=companies.phone2
Однако, мне нужно только еще одну вещь. Когда контакт возвращается, я хотел бы знать компанию контакт находится в (если contact.companies соответствует company.id). можно ли это сделать?
У меня есть попробовал что-то вроде:
SELECT
phoneRecord.*,
companies.ID,
companies.name,
contacts.ID,
FROM phoneRecord
LEFT JOIN contacts
LEFT JOIN companies ON contacts.company=companies.ID
ON phoneRecord.Phone=contacts.Phone1 OR phoneRecord.Phone=contacts.Phone2
LEFT JOIN companies ON phoneRecord.Phone=companies.phone1 OR phoneRecord.phone=companies.phone2
но его код ошибки 1066: Не уникальная таблица/псевдоним: «компании».
Я включил код, как предположил Томас, но он дал мне ту же ошибку. Возможно, я неправильно истолковал, что он имел в виду. Код следующим образом:
SELECT
phoneRecord.*,
companies.ID,
companies.name,
contacts.ID,
FROM phoneRecord
LEFT JOIN contacts ON phoneRecord.Phone=contacts.Phone1 OR phoneRecord.Phone=contacts.Phone2
LEFT JOIN companies ON contacts.company=companies.ID
LEFT JOIN companies ON phoneRecord.Phone=companies.phone1 OR phoneRecord.phone=companies.phone2
Я получил его, наконец, работать с этим:
SELECT
phoneRecordID,
phoneRecordPhone,
companyID,
contactsID,
contactsCompany,
companies.name
FROM(
SELECT
phoneRecord.ID as phoneRecordID,
phoneRecord.Phone as phoneRecordPhone,
companies.ID as companyID,
contacts.ID as contactsID,
contacts.company as contactsCompany
FROM phoneRecord
LEFT JOIN contacts
ON phoneRecord.Phone=contacts.Phone1 OR phoneRecord.Phone=contacts.Phone2
LEFT JOIN companies ON phoneRecord.Phone=companies.phone1 OR phoneRecord.phone=companies.phone2) as result
LEFT JOIN companies ON contactsCompany = companies.id
Спасибо, это было супер полезно.
Вы пропустили ключевое слово ON и определили ключи после «LEFT JOIN contacts» – Thomas
Не так плохо, ваш запрос, просто введите строку «LEFT JOIN companies ON contacts.company = company.ID» под «ON phoneRecord.Phone = contacts.Phone1 OR phoneRecord.Phone = contacts.Phone2 "строка, это просто синтаксическая ошибка, вы делали хорошо :) – Thomas
Он по-прежнему дает мне такую же ошибку, к сожалению. –