2015-08-10 6 views
-1

Итак, у меня есть две таблицы, customer_special и customer_nuk оба содержат одинаковые столбцы.SQL-результаты из двух таблиц И внутреннее соединение на другом?

Я еще одна таблица, customer_data индексируются id

Я хочу, чтобы выполнить запрос, где результаты содержат все элементы из customer_special и customer_nuk все же, используя значение из колонки customer_special.user_id и customer_nuk.user_id в inner join результаты от customer_data ,

Просто возвращение id из customer_data с каждой строкой customer_special и customer_nuk соответственно было бы здорово для этого примера. Я пробовал разные вещи, ни один из которых не был тем, на что я надеялся.

Следующие работы ожидаются; внутреннее соединение customer_data с правильным номером от customer_special, однако оно не ссылается на две таблицы в соответствии с запросами.

SELECT 
t.order_id as "Order ID", t.BY1 as "By", t.order_type as "Type", t.O_DATE as "Order Date", 
tr.short_name as "Customer short name", tr.www as "Customer website", 
tr.owner as "Customer owner", tr.postcode as "Customer postcode" 
FROM customer_special t 
INNER JOIN customer_data AS tr 
ON t.customer = tr.id 
LIMIT 50 

Тогда:

SELECT 
t.order_id as "Order ID", t.BY1 as "By", t.O_DATE as "Order Date", 
tr.short_name as "Customer short name", tr.www as "Customer website", 
tr.owner as "Customer owner", tr.postcode as "Customer postcode" 
FROM customer_special t 
JOIN customer_nuk 
INNER JOIN customer_data AS tr 
ON t.customer = tr.id 
LIMIT 50 

была моя последняя попытка.

Любая помощь в решении поставленной задачи будет оценена по достоинству. Спасибо.

+0

Если первые работы, пожалуйста, уточните, каков ваш вопрос. –

+0

Работает так, как ожидалось, но когда я пытаюсь присоединиться к двум таблицам, как показано во втором фрагменте кода, это не сработает. Вопрос в том, как я могу это сделать? – pokeybit

+0

Не могли бы вы уточнить, какой результат вы хотите? Мне непонятно, хотите ли вы, чтобы две первые таблицы были объединены и показаны бок о бок, или если их следует рассматривать как одну таблицу на выходе. – jpw

ответ

1

Если вы хотите, чтобы все данные из двух идентичных таблиц соединены с третьим, возможно, то, что вы ищете, - это union, который сделает один набор данных из двух идентичных таблиц и присоединится к этой таблице с третьей таблицей:

select * from (
    select * from customer_special 
    union all 
    select * from customer_nuk 
) src 
join customer_data on src.user_id = customer_data.id 

Обратите внимание, что использование union all не устранит повторяющиеся строки.

* необходимо заменить столбцами, которые вам нужны из каждой таблицы, и они должны быть одинаковыми для обеих таблиц в объединении.

Смежные вопросы