2013-03-03 3 views
0

У меня есть две таблицы: tableA и tableB Я хочу напечатать значение столбца tableB. Моя структура таблицы ниже:php loop получение значений из второй таблицы

Table A 
-id--------Name----- 
1   A 
2   B 
3   C 
4   D 
-------------------- 


Table B 

tableB_id-----------tableA_id-------------value------- 
1      1     68 
2      1     94 
3      1     97 
4      1     88 
5      1     93 
6      1     69 
7      1     95 
8      2     68 
9      2     94 
10      3     68 
11      4     68 
12      4     95 
------------------------------------------------------ 

Конечный результат должен быть, как показано ниже со значениями разделенной запятой

id------Name----------value----------------------------------------- 
1  A  68,94,97,88,93,69,95 
2  B  68,94 
3  C  68 
4  D  68,95 

Я попытался код ниже:

Здесь для каждого идентификатора в tableA будет несколько команд print_r($arr1), представленных как FIRST. В коде он печатает повторяющиеся значения, но команда, возвращаемая как SECOND, получает правильные значения.

Мой вопрос, как я могу избежать повторяющихся значений в FIRST части кода

<?php 
$rs = mysqli_query($dbc,"SELECT * FROM `tableA` limit $offset,$rows"); 
$items = array(); 
$a=0; 
while($row1 = mysqli_fetch_object($rs)) 
{ 
    $qry1 = mysqli_query($dbc,"SELECT tableB.value FROM tableA ,tableB WHERE tableA.`tableA_id`=tableB.`tableA_id` AND tableA.`tableA_id`='".$row->id."'");  
    $i=0; 
    while($row2 = mysqli_fetch_assoc($qry1)) 
    { 
    if($row2['id']=$row1->id) 
    { 
     $arr1 = $row2['value']; 
    } 
    print_r($arr1); // SECOND 
    $i++; 
    } 
    print_r($arr1); // FIRST 
    array_push($items, $row1); 
} 
?> 
+0

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – h2ooooooo

ответ

0

Я думаю, что GeoffK находится на правильном пути с GROUP_CONCAT. Попробуйте что-то вроде этого:

SELECT tableA.id AS id, 
     tableA.name AS name, 
     GROUP_CONCAT(tableB.value) AS value 
FROM tableA 
    JOIN tableB 
    ON tableA.id = tableB.tableA_id 
GROUP BY tableA.id 
+0

Я использовал запрос вместе с группой concat. Проблема заключается в том, что значения group_concat должны ссылаться на другую таблицу, чтобы получить имя id, поэтому я хочу избежать group_concat – user1249796

+0

Можете ли вы обновить свой вопрос, чтобы показать полный пример что вам нужно, включая эту третью таблицу? –

0

Я не уверен, если я понимаю вопрос правильно - но то, что я думаю, что вы могли бы искать в GROUP_CONCAT

+0

Да, я могу использовать GROUP_CONCAT, но я могу после этого получить запятую, мне нужно передать еще одну таблицу, чтобы получить имя идентификаторов. Возможно ли это? – user1249796

+0

Любое тело, чтобы помочь? – user1249796

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