2017-01-20 6 views
-2

С Союзом, в какой ситуации в мире вы его используете? Потому что для меня нет смысла использовать union в двух запросах на выбор из двух таблиц, которые имеют разные значения/значения столбца. Например:Когда использовать Union in mysql

таблицы люди:

id name age 

1 mark 23 
2 shawn 18 

таблица адреса:

id personID address 

1  1  some address 
2  2  another random address 

На основании приведенных выше таблиц, каким образом или по какой-либо причине вы бы использовать запрос Union?

EDIT

В принципе я понимаю, вы используете Союзов при работе на аналогичной информации из разных таблиц в одну таблицу, в целях повышения эффективности, а всегда запрашивать отдельно или с использованием JOIN и работать на подобной информации.

EDIT

Или же, когда дизайн таблиц (БД) не очень хорошо продумана. Потому что theres ничего не мешает кому-либо разрабатывать db не идеально из-за ограничений по времени И когда вы не знаете полной длины окончательного дизайна для таблиц.

+0

Что не так с вопросом о том, какую ситуацию использовать UNION? Я не понимаю, как это противоречит правилам ... – MarkyMark

+0

@Shadow. Это законный вопрос. Если вы не хотите отвечать на него, двигайтесь вперед. –

+3

Большинство ситуаций «реального мира» - это плохо разработанные схемы и оптимизация OR-условий. (IMHO) –

ответ

1

Простой пример в случае ненормированной таблицы, которую вы хотите нормализовать по данной причине (но не изменить исходную таблицу). Скажем, у вас есть таблица называется Loan_Disbursements со следующими атрибутами:

LoanID, Disbursement_Date, Disbursement_Amount, Refund_Date, Refund_Amount 

Вы хотите нормализовать это к следующему (я знаю, не лучшие имена):

LoanID, Activity_Date, Activity_Amount, Activity_Name 

код будет выглядеть как это:

SELECT LoanID, Disbursement_Date AS Activity_Date, Disbursement_Amount AS Activity_Amount, 'Disbursement' AS Activity_Name 
FROM Loan_Disbursements 

UNION ALL 

SELECT LoanID, Refund_Date AS Activity_Date, Refund_Amount AS Activity_Amount, 'Refund' AS Activity_Name 
FROM Loan_Disbursements 

конечно, есть и другие способы для достижения этой же (например, с помощью двух производных таблиц) в одном SQL заявление. Однако вам также потребуется оценить план запроса и, если есть разница в производительности.

В качестве примечания, если вы спрашиваете «в совершенном мире», где это будет использоваться, - это действительно так, как просить «в идеальном мире», зачем вам запасную шину. Почти через двадцать лет мне еще предстоит найти этот прекрасный мир. Но это действительно весело.

Надеюсь, что это поможет.

Приветствия!

+0

точно, профсоюзы предназначены для эффективности. Поскольку вы говорите, что у вас есть аналогичная информация из нескольких таблиц и у вас есть несколько запросов на эту подобную информацию, не было бы более эффективным сделать объединение для подобной информации, а с тех пор делать запросы на нее VS для каждого из этих запросов всегда что-то делает? – MarkyMark

+0

Но вы правы, потому что theres никогда не хватает времени или вам нужно разработать идеальный бит так же, как есть для чего угодно, в тех случаях вам нужен вариант резервного копирования. – MarkyMark