Создайте таблицу заказов, сгруппированных по user_id, которая суммирует количество товара - PullRequest
0 голосов
/ 09 июня 2018

У меня есть большая таблица mysql (в woocommerce), где люди могут покупать предметы более одного раза.То, что я хотел бы сделать, это иметь динамически генерируемую таблицу, в которой я выбираю продукт, к которому хочу обратиться (из выпадающего меню в php, если это возможно) и группирую количество продукта, приобретенного user_id.Я нашел этот код, но не смог сгенерировать таблицу, которую хотел бы получить.вот мой текущий тестовый код, чтобы попытаться заставить его работать, но таблица не генерируется;

<?php 
if (!is_user_logged_in() || !current_user_can('manage_options')) wp_die('This page is private.');

$con=mysqli_connect("ip","user","pass","database");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,
"select p.user_id,
       max( CASE WHEN pm.meta_key = '_billing_first_name' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_first_name,
       max( CASE WHEN pm.meta_key = '_billing_last_name' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_last_name,
       max( CASE WHEN pm.meta_key = '_billing_address_1' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_address_1,
       group_concat(distinct oi.order_item_name separator '|' ) as order_items
from wp_posts p join
    wp_postsmeta pm
    on p.ID = pm.post_id join
    wp_woocommerce_order_items oi
where p.post_type = 'shop_order' and
      p.post_status = 'wc-completed' and
      oi.order_item_name = 'Product Name'
group p.user_id");
echo "<table>";
while($row = mysqli_fetch_array($result))
{
echo "<tr style='font-size: 0.665em'>";
echo "<td>"  . $row['billing_first_name'] . "</td>";
echo "<td>" . $row['_billing_last_name'] . "</td>";
echo "<td>" . $row['billing_address_1'] . "</td>";
echo "</tr>";
}
echo "</table>";
?>

моей конечной целью было бы это с выпадающим меню для выбора рассматриваемого продукта на основе идентификатора продукта, чтобы я мог видетьсколько каждый пользователь приобрел запрошенного продукта (выполненные заказы только в соответствии с кодом выше);

user ID | Product | quantity | billing address 
23      | chair   | 4        | 22 Bank street
42      | chair   | 12       | 123 Smith Road
88      | chair   | 5        | 3 Parker avenue

и т. д.

1 Ответ

0 голосов
/ 09 июня 2018

Я не уверен, почему вы используете подзапрос в select.Вы также выбираете столбцы, которые вам не нужны / не нужны.

Делает ли это то, что вам нужно?

select p.user_id,
       max( CASE WHEN pm.meta_key = '_billing_first_name' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_first_name,
       max( CASE WHEN pm.meta_key = '_billing_last_name' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_last_name,
       max( CASE WHEN pm.meta_key = '_billing_address_1' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_address_1,
       group_concat(distinct oi.order_item_name separator '|' ) as order_items
from wp_posts p join
     wp_postmeta pm
     on p.ID = pm.post_id join
     wp_woocommerce_order_items oi
     on p.ID = oi.order_id
where p.post_type = 'shop_order' and
      p.post_status = 'wc-completed' and
      oi.order_item_name = 'Product Name'
group by p.user_id;

Мне пришлось размышлять о том, откуда берутся некоторые столбцы, потому что ваш вопросне является явным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...