2015-05-13 11 views
0

SQL 2008: Я пытаюсь получить данные (т.е. слияние) из двух таблиц (TODO (T) и TODO_OPERATOR (Z)), которые имеют одинаковые поля, но разные данные, и затем используйте 2 внутренних объединения в объединенных данных. Не знаете, как это сделать. Приведенный параметр @id будет, например, 001. Вы как-то объединяете таблицы T и Z в порядке выбора, а затем выполняете INNER JOINS?SQL select from 2 tables with multiple internal join

SELECT 
T.*, Z.*, TT.lookup_desc todo_type_desc, TS.lookup_desc status_desc 
FROM TODO T 
CROSS JOIN TODO_OPERATOR Z 
INNER JOIN LOOKUP TT ON T.todo_type=TT.lookup_id, Z.todo_type=TT.lookup_id 
INNER JOIN LOOKUP TS ON t.status=TS.lookup_id, z.status=TS.lookup_id 
WHERE [email protected] 

Упрощенные поля таблицы будет:

TODO и TODO_OPERATOR:

Идентификация, статус, todo_type

LOOKUP:

lookup_id, lookup_desc

Благодаря

+2

Почему вы используете 'CROSS JOIN '? – Parado

+1

В какой таблице указан идентификатор столбца в предложении where? В любом случае, дайте нам все определения таблиц! – jarlh

+2

Не так много людей знали бы с этим объемом информации. Можете ли вы описать свои таблицы, данные и то, что вы пытаетесь достичь? Также, какие СУБД вы используете? –

ответ

1

ВЫБРАТЬ

A. *

, TT.lookup_desc todo_type_desc

, TS.lookup_desc status_desc

ИЗ

(выберите идентификатор, статус todo_type из TODO СОЮЗА ALL выберите id, status, todo_type из TODO_OPERATOR) A

INNER JOIN LOOKUP TT ON A.todo_type = TT.lookup_id

INNER JOIN LOOKUP TS ON A.status = TS.lookup_id

WHERE ID = @ ID

0
SELECT 
T.*, Z.*, TT.lookup_desc todo_type_desc, TS.lookup_desc status_desc 
FROM TODO T 
INNER JOIN TODO_OPERATOR Z 
ON Z.todo_type = T.todo_type 
AND z.status = T.status 
INNER JOIN LOOKUP TT ON T.todo_type=TT.lookup_id 
INNER JOIN LOOKUP TS ON T.status=TS.lookup_id 
WHERE [email protected] 

Я не уверен, если это вам поможет, информация, которую вы даете, немного минимальна.

+0

спасибо, но это не совсем то, что мне нужно, обновил мой вопрос, надеюсь, что поможет немного больше. – PeteTheGreek