如何使用 php 从 MySQL table 中不同列中的相同值中获取一个?

How to Get one from same value in different column in MySQL table using php?

我的 page_views table

里有这个
 id   cookie_id   item_id    content
======================================
1      123456   product_1     some
2      123456   product_2     some
3      654321   product_1     some
4      654321   product_2     some
5      654321   product_3     some
6      444444   product_5     some
7      222222   product_7     some
8      222222   product_2     some
9      333333   product_2     some

我想让客户也查看框,我的变量中只有当前页面的 product_id。现在一个新用户到达 product_2 his/her cookie_id 333333 不,我想在客户还查看了 Lebel 时显示 him/her 个产品包装盒。在这种情况下,应获取并显示 id = 1 & 5 & 7(无重复项)的项目。

$fetch_data = $conn->query("SELECT item_id FROM page_veiws WHERE item_id IN (SELECT item_id FROM page_veiws GROUP BY item_id HAVING COUNT(cookie_id) > 1)");

但是没用。 (当然我确实理解 foreach 循环来显示获取的框),我只是想让查询获取它。

我怎样才能实现这些目标?

请帮帮我?

SELECT
  same_cookie.item_id,
  MIN(same_cookie.id)   AS id
FROM
  page_views   AS same_product
INNER JOIN
  page_views   AS same_cookie
    ON  same_cookie.cookie_id = same_product.cookie_id
    AND same_cookie.item_id  != 'Product_2'
WHERE
      same_product.item_id    = 'Product_2'
  AND same_product.cookie_id != 333333
GROUP BY
  same_cookie.item_id

where 子句将 same_product 过滤为除了当前 cookie 之外的所有也查看过产品 2 的行(避免显示当前用户之前查看过的其他项目)。

然后,获取那些 cookie 查看过的所有产品,除了产品 2(避免显示已经被查看过的产品)。

GROUP BY 每个产品一行(避免重复)。 MIN(id) 以获得查看该产品的第一个页面视图。

Returns...

| Product_1 | 1 |
| Product_3 | 5 |
| Product_7 | 7 |

如果您不需要产品列,请删除 SELECT 子句的第一行,但将其保留在 GROUP BY 中。

工作示例:https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=daa47642433bee1cbb978b929934a088