Объединение двух таблиц SQL, разделение строк на новые столбцы

Структура базы данных для таблицы 1 выглядит следующим образом:

id | name | total

Пример данных выглядит следующим образом:

1 | Anna  | 100,00€
2 | Peter | 1000,00€
3 | John  | 10,00€

Структура базы данных для таблицы 2 выглядит следующим образом:

id | code | value

Пример данных выглядит следующим образом:

1 | Tax 24%  | 20,00€
1 | Tax 14%  | 2,00€
2 | Tax 24%  | 200,00€
2 | Tax 14%  | 20,00€
2 | Tax 24%  | 2,40€
here might also be sales with 0% and 9% tax

Как я хочу, чтобы SQL-оператор php отображал результаты в HTML-таблице:

 id | name | Tax with 24% | Tax with 14% | Tax with 9% | total
*
1  | Anna |    20,00€    |    2,00 €    |     0%      |  100€

КАК МОЖНО НАПИСАТЬ ЭТО В MYSQL PHP HTML?

<?php  $query = $this->db->query("select
order_id,
firstname,
lastname,
total,
(select value from `" . DB_PREFIX . "order_total` where title='ALV 24%') as tax24,
(select value from `" . DB_PREFIX . "order_total` where title='ALV 14%') as tax14,
(select value from `" . DB_PREFIX . "order_total` where title='ALV 9%') as tax9
from
`" . DB_PREFIX . "order`");

$products = array();

// Check if there are any rows returned from the query
if ($query->num_rows > 0) {

// Loop through the returned rows for processing
foreach ($query->rows as $result) {
$products[] = array(
'order_id' => $result['order_id'],
'firstname' => $result['firstname'],
'lastname' => $result['lastname'],
'tax24' => $result['tax24'],
'tax14' => $result['tax14'],
'tax9' => $result['tax9'],
'total' => $result['total'],
);
}
}
foreach ($products as $orders) { ?>
<table class="list">
<tr>
<td><?php print $orders['order_id']; ?></td>
<td><?php print $orders['firstname'] . " " . $orders['lastname']; ?></td>
<td><?php print $orders['tax24']; ?></td>
<td><?php print $orders['tax14']; ?></td>
<td><?php print $orders['tax9']; ?></td>
<td><?php print $orders['total']; ?></td>
</tr>
<?php
}
?>
</table>

0

Решение

Псевдо sql хитрой части:

select
id,
name,
(select value from table2 where code='Tax 24%' and table2.id=table1.id) as tax24,
(select value from table2 where code='Tax 14%' and table2.id=table1.id) as tax14,
(select value from table2 where code='Tax 9%' and table2.id=table1.id) as tax9
from
table1

И, конечно, вы должны запросить это в php и отобразить правильно.

0

Другие решения

table2.code должен содержать значение типа «24», «14», «24» .. не «Tax 24%»

0

По вопросам рекламы [email protected]