объединение 2 столбцов из таблицы 1 в таблицу 2
Вопрос
Как бы вы связали столбцы таблицы 1 с 2 столбцами в таблице 2
Я создал таблицу State с 50 точными строками
пытается связать (weddingState, contactState) в таблице Wedding '
Это заявление, которое я создал, но оно корректно присоединяется только к верхнему WeddingState - похоже, его не волнует ВНУТРЕННЕЕ присоединение под ним ...
SELECT *
ОТ свадеб
ВНУТРЕННЕЕ СОЕДИНЕНИЕ указано как s1 ON weddings. WeddingState = s1.StateId // состояние брака
ВНУТРЕННЕЕ СОЕДИНЕНИЕ указано как s2 ON weddings.ContactState = s2.StateId // состояние контакта невесты
ГДЕ weddings.weddingid = " 094829292 "
Решение
Я полагаю, что вы извлекаете их в PHP или что-то в этом роде и извлекаете строки в хеш-массиве с ключом по имени поля. Конечно, с данным ключом в хэше может быть только один элемент. Поэтому вам нужно использовать псевдонимы столбцов, чтобы столбцы с одинаковыми именами имели разные псевдонимы.
SELECT w.*, s1.StateID AS wstate, s2.StateId AS cstate
FROM weddings AS w
INNER JOIN states AS s1 ON w.WeddingState = s1.StateId //state of marriage
INNER JOIN states AS s2 ON w.ContactState = s2.StateId //contact state of bride
WHERE w.weddingid="094829292";
Теперь ваш хэш-массив будет иметь ключи " wstate " и "cstate". Без наложения этих столбцов один всегда будет перезаписывать другой.
Другие советы
А что вы получаете за свой результат, который приводит вас к выводу?
Это будет сбивать с толку для начинающих, потому что имена полей в двух соединениях, а также некоторые имена полей в основной таблице идентичны. Это хорошая идея - явно выбрать выходные столбцы и дать им значимые псевдонимы.
Как насчет:
ВЫБЕРИТЕ s1.StateName, s2.StateName
ОТ свадеб
ВНУТРЕННЕЕ СОЕДИНЕНИЕ указано как s1 ON weddings.WeddingState = s1.StateId // состояние брака
ВНУТРЕННЕЕ СОЕДИНЕНИЕ указано как s2 ON weddings.ContactState = s2.StateId // состояние контакта невесты
ГДЕ weddings.weddingid = " 094829292 "
Спасибо, Билл, я также добавил StateName
SELECT w. *,
s1.StateId AS WeddingStateId,
s1.StateName AS WeddingStateName,
s2.StateId AS ContactStateId,
s2.StateName AS ContactStateName
ОТ свадеб КАК W
ВНУТРЕННЕЕ СОЕДИНЕНИЕ утверждает, что s1 ВКЛ w.WeddingState = s1.StateId
ВНУТРЕННЕЕ СОЕДИНЕНИЕ утверждает, что s2 ВКЛ w.ContactState = s2.StateId