объединение 2 столбцов из таблицы 1 в таблицу 2

StackOverflow https://stackoverflow.com/questions/437617

  •  22-07-2019
  •  | 
  •  

Вопрос

Как бы вы связали столбцы таблицы 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top