#sql-server-2008
#sql-server-2008
Вопрос:
У меня есть 2 таблицы: 1 — Поиск, а другая — детали.
Таблица поиска
Identity Type Value
200 Entity A
201 Entity B
202 Entity C
203 Entity D
300 SOURCE X
301 SOURCE y
Подробная таблица
Sender(int) Reciever(int) Source(int) State(varchar)
200 203 300 hongkong
В таблице сведений Отправитель, получатель — это объект в таблице поиска с идентификатором в качестве идентификатора.
Моя проблема в том, что когда я пишу запрос так, как Select Sender,Reciever,Source,State from Details
я получаю 200,203,300,hongkong
, но я хочу получить результат как A,D,X,hongkong
. Пожалуйста, помогите.
Комментарии:
1. Используете ли вы анти-шаблон «одна истинная таблица поиска» ?
2. Я не понимаю, что вы говорите. Пожалуйста, объясните четко
3. В моем комментарии есть ссылка, если вам нужны дополнительные пояснения.
4. @@Martin Smith: обожаю этот антишаблон!! Видел, как это использовалось на практике, и создатель не был бы убежден в обратном.
Ответ №1:
SELECT tSen.[Value] as [Sender], tRec.[Value] as [Reciever]
, tSou.[Value] as [Source], D.[State]
FROM Details as D
JOIN Lookup as tSen ON D.Sender = tSen.Identity
JOIN Lookup as tRec ON D.Reciever = tRec.Identity
JOIN Lookup as tSou ON D.Source = tSou.Identity
Ответ №2:
Используйте СОЕДИНЕНИЕ для обеих таблиц. Это базовый синтаксис SQL
Комментарии:
1. Не могли бы вы привести какой-нибудь пример? Это будет действительно полезно.