2014-02-08 2 views
1

, когда я пытаюсь соединить таблицы с внутренним join..it возвращает data..but, когда я присоединиться к 4 таблицы с полным внешним соединение, то я говорюОШИБКА: полное объединение поддерживаются только слияние объединяемого присоединиться к условиям

ERROR: FULL JOIN is only supported with merge-joinable join conditions"

пример запроса:

SELECT hr_employee.name,hr_movement.amount,hr_concept.name,hr_period.name 
FROM hr_employee 
FULL OUTER JOIN hr_movement 
ON hr_employee.ad_client_id=hr_movement.ad_client_id 
FULL OUTER JOIN hr_concept 
ON hr_movement.ad_client_id=hr_employee.ad_client_id 
FULL OUTER JOIN hr_period 
ON hr_concept.ad_client_id=hr_employee.ad_client_id 

ответ

0

Там нет в MySQL нет FULL OUTER JOIN. См 7.2.12. Outer Join Simplification и 12.2.8.1. JOIN Syntax:

You can emulate FULL OUTER JOIN using UNION (from MySQL 4.0.0 on):

with two tables t1, t2:

SELECT * FROM t1 
LEFT JOIN t2 ON t1.id = t2.id 
UNION 
SELECT * FROM t1 
RIGHT JOIN t2 ON t1.id = t2.id 

with three tables t1, t2, t3:

SELECT * FROM t1 
LEFT JOIN t2 ON t1.id = t2.id 
LEFT JOIN t3 ON t2.id = t3.id 
UNION 
SELECT * FROM t1 
RIGHT JOIN t2 ON t1.id = t2.id 
LEFT JOIN t3 ON t2.id = t3.id 
UNION 
SELECT * FROM t1 
RIGHT JOIN t2 ON t1.id = t2.id 
RIGHT JOIN t3 ON t2.id = t3.id 

Source

Посмотрите на here

1
SELECT hr_employee.name,hr_movement.amount,hr_concept.name,hr_period.name 
FROM hr_employee 
FULL OUTER JOIN hr_movement 
ON hr_employee.ad_client_id=hr_movement.ad_client_id 
FULL OUTER JOIN hr_concept 
ON hr_movement.ad_client_id=hr_employee.ad_client_id /*<- here*/ 
FULL OUTER JOIN hr_period 
ON hr_concept.ad_client_id=hr_employee.ad_client_id /*<- and here*/ 

Вы соединения таблиц, но не использовать эти таблицы в условии объединения. Кроме того, MySQL не поддерживает FULL OUTER JOINs. Они реализованы как в this answer.

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