Как получить отдельное значение поля в нескольких полях в нескольких таблицах?

у меня есть две таблицы x и y. В этой таблице x страна x1, страна x2, страна y1, страна y2, страна y2. Для этих данных, как я могу получить отдельные значения страны в этих двух таблицах с этим полем для четырех стран?

До этого я использовал одну страну в одной таблице, как эта,

$query="select distinct(`x1`) from x";

Теперь у меня есть разные значения в этих двух таблицах, а также в четырех значениях страны. Ибо этот союз возможен. Но мне нужно любое решение, используемое в одном запросе без концепции объединения.

Пожалуйста, дайте идею для этого. Заранее спасибо...


person Karthik    schedule 15.07.2010    source источник
comment
Почему нельзя использовать UNION? Можете ли вы привести пример ваших существующих данных и того, что вы хотите вернуть?   -  person Mike    schedule 15.07.2010
comment
@Mike, я использовал и получил решение в союзе, кроме союза, я попросил решение для любого другого альтернативного или простого метода.   -  person Karthik    schedule 15.07.2010


Ответы (3)


Идея: используйте UNION

person MadH    schedule 15.07.2010
comment
на момент написания этого не было указано: P подумает об альтернативе - person MadH; 15.07.2010

Union — лучший ответ на этот вопрос, поскольку именно для этого он и предназначен.

Единственный другой метод, который я могу придумать, - это полное внешнее соединение - что-то вроде:

select coalesce(cx.country,cy.country) country 
from (select distinct country from x) cx
full outer join (select distinct country from y) cy 
on cx.country = cy.country

Однако вы не можете выполнять полные внешние соединения в MYSQL (насколько мне известно) - и обходные пути включают союзы...

person Community    schedule 15.07.2010

не самый эффективный запрос, но попробуйте следующее:

SELECT `x1` FROM x
UNION 
SELECT `x2` FROM x
UNION 
SELECT `y1` FROM y
UNION 
SELECT `y2` FROM y
person KM.    schedule 15.07.2010
comment
@KM: UNION возвращает разные результаты, поэтому нет необходимости в DISTINCT в каждом SELECT. - person Mike; 15.07.2010
comment
@Karthik, UNION - это способ сделать это, все остальное будет сложнее, почему вы не можете использовать UNION? - person KM.; 15.07.2010