2010-08-11 8 views
3

у меня есть 2 отдельные запросы, которые возвращает мне следующие таблицы:SQL объединить 2 таблицы

=========================== 
Id f_name  l_name 
=========================== 
15 Little  Timmy 
16 John  Doe 
17 Baby  Jessica 
--------------------------- 


=========================== 
Id item_name item_price 
=========================== 
15 Camera  100 
15 Computer 200 
16 Pony  55 
--------------------------- 

В MySQL, как я объединить 2 в этом:

=================================================== 
Id f_name  l_name  item_name  item_price 
=================================================== 
15 Little  Timmy  Camera  100 
15 Little  Timmy  Computer  200 
16 John  Doe  Pony   55 
17 Baby  Jessica 
--------------------------------------------------- 

Любая помощь очень оценили. Благодарю.

+0

Как? Я немного смущен этим. – StackOverflowNewbie

ответ

2

Вы должны использовать левое внешнее join:

SELECT names.Id, names.f_name, names.l_name, prices.item_name, prices.item_price 
FROM names 
LEFT OUTER JOIN prices 
    ON names.Id = prices.Id 
+0

+1 «Внешнее соединение» будет результатом всех строк в именах таблиц * и строк, которые могут быть сопоставлены с таблицами * цен *. Когда в таблице нет строки * цены *, то есть таблица, которая соединена с внешним, тогда будут возвращаться все строки из имен таблиц *. Фактически, * Baby Jessica * должен быть возвращен, хотя для нее нет соответствующих строк в таблице * цены *. –

+0

@OMG Ponies - спасибо за указание ошибки синтаксиса ... теперь исправлено. – Oded

3

выберите
name_table.Id, name_table.f_name, name_table.l_name,
item_table.item_name,
item_table.item_price из name_table left join item_table on name_table.Id = item_table.Id

Наслаждайтесь!

0

И если вы хотите создать таблицу с этим результатом в базе данных, выполните любое из этих действий select/join в команде create table.

CREATE TABLE foobar SELECT ... 
0

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

Ваш CREATE VIEW заявление будет выглядеть более или менее, как ответ Дуга, в то время как ваш выбор будет затем

выберите ID, f_name, l_name, item_name, ITEM_PRICE от my_view;

More details on MySQL CREATE VIEW

3

Есть много типов соединений, и это очень интересная и важная тема в управлении базами данных. У собственного Джеффа Этвуда есть хороший код post, описывающий различные типы объединений и случаи, в которых они будут использоваться.

+0

@StackOverflowNewbie, прочитайте эту статью. –

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