2015-02-19 2 views
0

У меня есть две таблицы.Свертывание данных в mysql

  • biblio_contributor_data (чид, имя, фамилия)
  • biblio_contributor (NID, чид)

Существует несколько nid для каждого cid во второй таблице. То, что я хотел бы сделать, это свернуть данные в запросе в временном столбце или таблице, как в примере.

biblio_contributor_data

    
+-----+----------+-----------+ 
| cid | lastname | firstname | 
+-----+----------+-----------+ 
| 1 | john  | grand  | 
| 2 | James | cook  | 
| 3 | marco | palo  | 
+-----+----------+-----------+ 

biblio_contributor

 
+-----+------+ 
| nid | cid | 
+-----+------+ 
| 4 | 1 | 
| 4 | 2 | 
| 4 | 3 | 
| 5 | 2 | 
+-----+------+ 

Я хотел бы результат запроса со следующим, если это возможно, используя SQL заявление, если это возможно:

 
+-----+------------------------------------+ 
| nid | temporary column     | 
+-----+------------------------------------+ 
| 4 | john grand, James cook, marco palo | 
| 5 | James cook       | 
+-----+------------------------------------+ 

ответ

0

Попробуйте

SELECT b1.nid, group_concat(concat(firstname, " ", lastname)) 
    from biblio_contributor b1, biblio_contributor_data b2 ON b1.cid=b2.cid 
    group by b1.nid 
1

CONCAT Использование объединить lastname и firstname и использовать GROUP_CONCAT сочетать различные строки.

Запрос

SELECT t1.nid, 
GROUP_CONCAT(CONCAT(t2.lastname,' ',t2.firstname)) AS `temporary column` 
FROM biblio_contributor t1 
JOIN biblio_contributor_data t2 
ON t1.cid=t2.cid 
GROUP BY t1.nid; 

Fiddle demo

0

Ниже работает для меня:

<?php 
$stmt = 'SELECT t2.nid, group_concat(t1.lastname, t1.firstname) FROM `biblio_contributor_data` as t1 INNER JOIN biblio_contributor as t2 GROUP BY t2.nid'; 
$res = mysql_query($stmt); 
while($rp = mysql_fecth_array($res)) { 
    // YOUR LOGIC GOES HERE 
} 

?> 
0

Поскольку до сих пор никто не бросил на странице руководства для GROUP_CONCAT, здесь:
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

Пожалуйста, хорошо прочитайте об этом, особенно. часть

Результат усечен до максимальной длины, заданной системной переменной group_concat_max_len
Смежные вопросы