объединение 2 столбцов из таблицы 1 в таблицу 2 - PullRequest
2 голосов
/ 13 января 2009

Как бы вы связали столбцы таблицы 1 с 2 столбцами в таблице 2

Я создал таблицу ' Состояние ' с 50 точными строками

пытается связать (weddingState, contactState) в таблице Wedding

Это заявление, которое я создал, но оно только правильно присоединяется к верху WeddingState - кажется, не волнует ВНУТРЕННЕЕ присоединение под ним ...

ВЫБРАТЬ *

ОТ свадеб

ВНУТРЕННЕЕ СОЕДИНЕНИЕ заявляет как s1 на свадьбах. WeddingState = s1.StateId // состояние брака

ВНУТРЕННЕЕ СОЕДИНЕНИЕ указано как s2 ON weddings.ContactState = s2.StateId // состояние контакта невесты

ГДЕ weddings.weddingid = "094829292"

Ответы [ 4 ]

3 голосов
/ 13 января 2009

Я предполагаю, что вы извлекаете их в 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". Без наложения этих столбцов один всегда будет перезаписывать другой.

0 голосов
/ 13 января 2009

Спасибо, Билл, я также добавил 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

0 голосов
/ 13 января 2009

Как насчет:

ВЫБРАТЬ s1.StateName, s2.StateName

ОТ свадеб

ВНУТРЕННЕЕ СОЕДИНЕНИЕ указано как s1 ON weddings.WeddingState = s1.StateId // состояние брака

ВНУТРЕННЕЕ СОЕДИНЕНИЕ указано как s2 ON weddings.ContactState = s2.StateId // состояние контакта невесты

ГДЕ weddings.weddingid = "094829292"

0 голосов
/ 13 января 2009

А что вы получаете за свой результат, который приводит вас к выводу?

Это будет сбивать с толку для начинающих, потому что имена полей в двух соединениях, а также некоторые имена полей в основной таблице идентичны. Это действительно хорошая идея - явно выбрать выходные столбцы и дать им значимые псевдонимы.

...