gpt4 book ai didi

php - 从两个表中提取

转载 作者:行者123 更新时间:2023-11-29 04:49:40 25 4
gpt4 key购买 nike

我有两个正在使用的表格示例我正在使用输出来构建数组,因此我的输出需要是单列

第一个表是产品列表

    PRODUCT ID    PRODUCT_NAME
01 product1
02 product2
03 product3
04 product4
05 product5
06 product6
07 product7
08 product8
09 product9
10 product10
11 product11
12 product12

表二是购买 list

    SALESID       PRODUCT_NAME       USERID       DATE
01 product1 001ABC 11-10-2012
02 product5 001ABC 11-11-2012
03 product1 002XYZ 11-11-2012
04 product12 001ABC 11-13-2012
05 product7 001ABC 11-13-2012
06 product3 002XYZ 11-14-2012
07 product11 002XYZ 11-14-2012

现在我需要的是提供一个像 001ABC 这样的 USERID如果 USERID 与我提供的匹配并且(它应该自动)出现在产品表中,我需要输出为 1,如果它只出现在产品表中,我需要它显示 0

所以上面两个表的两个例子和这两个 USERID 看起来像这样

提供的用户 ID 001ABC产量

  OUTPUT
1
0
0
0
1
0
1
0
0
0
0
1

提供的用户 ID 002XYZ产量

  OUTPUT
1
0
1
0
0
0
0
0
0
0
1
0

使用 CASE 语句失败或我的语法不正确我正在使用 PHP 和 MYSQL

只要我有一个 USERID,我当前的查询就可以正常工作,但是当我尝试按 userID 过滤时失败

PHP/MYSQL查询:

    SELECT (PURCHASES.PRODUCT_NAME IS NOT NULL) AS purchased 
FROM PRODUCTS
LEFT JOIN PURCHASES
ON PRODUCT_NAME = PRODUCT_NAME ORDER BY 1

我不确定我做错了什么。

当我添加另一个有两次购买的用户时,结果似乎只是向输出添加了两行,因此输出将有 14 行,而不是我显示的示例中的原始 12 行。

我怎样才能得到单列输出,记录总数等于每行设置为零的产品总数,除非在由产品名称标识的购买表中找到匹配项而不是零1 在输出中。

最佳答案

这是您想要的查询。您需要按产品编号对结果进行排序;您按输出列中的 0/1 值对它们进行排序,这当然会破坏该列的用途。

您还需要对过滤后的购买表进行汇总,以确定是否有购买过特定产品。那就是子查询“b”。

最后,您将 join from products 保留为 purchases,因为您希望每个产品的输出结果集中只有一行。

     select ifnull(b.number>0,0) output
from products a
left join (
select count(*) number,
product_name
from purchases
where userid = '001ABC'
group by product_name
) b on a.product_name = b.product_name
order by a.product_id

例如,请参阅此 SQL Fiddle。 http://sqlfiddle.com/#!2/6e985/12/0

关于php - 从两个表中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13370928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com