2014-11-11 2 views
1

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

Data:

ID .. | name .. | Job...| 
001 | name1. | Job1 | 
002 | name2. | Job2 | 
003 | name3. | Job3 | 

dataAttributes:

ID... | Number | 
001 | value 1 .| 
001 | value 2 .| 
002 | value 3 .| 
003 | value 4 .| 
003 | value 5 .| 

Я хочу присоединиться к этим таблицам в целях:

ID .. | name.. | Job ..|Number 1  | Number 2..| 
001 | name1 | Job1 |value 1......| value 2 ..| 
002 | name2 | Job2 |value 3......|...........| 
003 | name3 | Job3 | value 4.... | value 5 ..| 

Не могли бы вы оказать мне помощь?

=======Solved======= 

Я нашел решение сам, используя следующий запрос

select 
D.*, 
(select DA.number from dataAttributes as DA where D.ID = DA.ID LIMIT 1,1) as number1, 
(select DA.number from dataAttributes as DA where D.ID = DA.ID LIMIT 2,1) as number2, 
(select DA.number from dataAttributes as DA where D.ID = DA.ID LIMIT X,1) as numberX 
from data as D 
+1

возможно дубликат [сводной таблицы MySQL] (http://stackoverflow.com/questions/7674786/mysql-pivot-table) – FuzzyTree

+0

Thnks для вашего ответа. Я прочитал этот пост, прежде чем задавать этот вопрос, но он отличается от моего дела. Поскольку у меня есть несколько атрибутов для одного и того же идентификатора – user3801843

ответ

1

Попробуйте

SELECT * FROM data 
INNER JOIN dataAttributes ON data.ID = DataAttributes.ID; 
+0

Thnks для ответа. Однако этот запрос будет объединяться только в обе таблицы, не указывая атрибут в представлении столбцов. – user3801843

0

Если у вас есть только два номера, вы можете использовать min() и max():

select d.*, min(da.Number) as Number1, max(da.Number) as Number2 
from data d left join 
    dataAttributes da 
    on d.id = da.id 
group by d.id; 
+0

Thnks для вашего ответа. На самом деле у меня более двух значений на Id. Но это поможет мне в другом запросе – user3801843

+0

@ user3801843. , , Я бы предложил вам задать еще один вопрос, более подробно о том, что вы действительно пытаетесь выполнить. Включите такую ​​информацию о том, как вы решаете, какой номер входит в какую строку. Просто редактирование этого вопроса было бы невежливо для тех, кто ответил, потому что изменение вопроса может привести к аннулированию ответов, притягивающих голоса. –

+0

Нет, я не изменил вопрос, я просто ответил, когда вы сказали, что ваш запрос будет работать для двух чисел, этот запрос поможет мне с другой проблемой, но исходный вопрос остается без ответа :) – user3801843

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