Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL,SubSelect,这可能吗?_Php_Mysql - Fatal编程技术网

Php MySQL,SubSelect,这可能吗?

Php MySQL,SubSelect,这可能吗?,php,mysql,Php,Mysql,所以,我有一张捐款表。它存储一个$value和一个列框,供他们选择货币或实物捐赠。实物捐赠可以有美元,但通常没有。实物捐赠是指有人捐赠实物,如割草机、桌子、椅子等。然后我有了捐赠者。最后,我有一个领导小组。根据一定数量,捐赠者被投入到一个捐赠领导小组中。因此,100美元的捐赠者被放入另一个捐赠者组,1000美元的捐赠者被放入下一个捐赠者组,依此类推。我需要合计所有捐赠,但不包括所有实物捐赠,因为这些捐赠(即使它们有货币价值)不算作将捐赠者放入领导小组的位置 表:我无法执行SHOW CREATE,

所以,我有一张捐款表。它存储一个$value和一个列框,供他们选择货币或实物捐赠。实物捐赠可以有美元,但通常没有。实物捐赠是指有人捐赠实物,如割草机、桌子、椅子等。然后我有了捐赠者。最后,我有一个领导小组。根据一定数量,捐赠者被投入到一个捐赠领导小组中。因此,100美元的捐赠者被放入另一个捐赠者组,1000美元的捐赠者被放入下一个捐赠者组,依此类推。我需要合计所有捐赠,但不包括所有实物捐赠,因为这些捐赠(即使它们有货币价值)不算作将捐赠者放入领导小组的位置

表:我无法执行SHOW CREATE,因为它有一个我无法控制的服务器值需要更改。我希望这对每个人都是好的。我只想显示3个表及其所有当前字段。对不起,我失约了

好的,对于表,我记不住所有的语法,但是应该很容易看到外键和主键,所有的字段都在那里。我只是有点匆忙,因为今天是感恩节,我的家人因为我在电脑上而生我的气

CREATE TABLE donor (
DonorID INT NOT NULL AUTO_INCREMENT Primary Key,
FirstName VARCHAR(100),
LastName VARCHAR(100),
Street Address VARCHAR(100),
City VARCHAR(100),
State VARCHAR(2),
Zip VARCHAR(5),
Email VARCHAR(100), );
限制是他们通过下拉框选择的两个条目之一。限制(然后它是由捐赠者指定用于特定项目或非限制性的,这意味着捐赠者不关心资金的使用方式。捐赠类型的工作方式相同,但它是实物或货币。我只想计算货币价值的总和

CREATE TABLE donation (
DonationID INT NOT NULL AUTO_INCREMENT Primary Key,
Restriction VARCHAR(10) NOT NULL,
Amount VARCHAR(100) NOT NULL,
Description VARCHAR(2000),
DonationType VARCHAR(100) NOT NULL,
DonorID INT NOT NULL Foreign Key,
DateReceived DATE NOT NULL,
领导小组表:我吃完后会加上,对不起,我的家人要杀了我

LeaderGrip不是AI,它是每个Leaderhip组的名称:其他捐赠者、创始人俱乐部、朋友圈等等。这将永远是独一无二的,所以我将其作为PK,但如果出于某种原因和AI领域,我可以这样做

我可以发布我的代码,如果这会使它更容易,但我觉得它会变成一个巨大的文本墙的人。然而,这是一个网站和其他编程语言,我在这个项目中使用的是js和php,因此,如果它可以在php中,这是一个选项。我也可以给你的网站链接,让你查看信息,因为目前所有的数据都是虚构的,如果有帮助的话,很明显真实的数据是无法共享的。只需索取它,因为我并不真的想发布它,而有些人可能只是进入并开始向我的表中添加数据

代码:



如果我理解的很好,问题是:将每个用户的所有“非实物”捐赠相加,以确定他们应该加入哪一组

如果是这样,您的DB模型缺少一些外键,以便将捐赠者链接到他们的捐赠和LGG

以下是您可以使用的MCD示例:

Donor ((PK)DonorId, Address, Phone, (FK -> LGG) LggId)
Donation((PK)DonationId, (FK -> Donor)DonorId, DonationType, DonationAmount, Description, Date_Received)
LGG ((PK)LggId, LeaderGrp, LGDescrip, MinAmount)
其中MinAmount是属于该组所需的最小数量

从那以后,你所要做的就是:

select d.donorid, sum(do.donationamount)
from donor d,
donation do
where d.donorid=do.donorid
and do.donationtype!='in-kind'
group by d.donorid

你最终会得到每一位捐赠者捐赠的真金白银。

这应该满足你的需求

mysql> select * from donation;
+------------+--------------+----------------+---------+
| DonationID | DonationType | DonationAmount | DonorID |
+------------+--------------+----------------+---------+
|          1 | monetary     |             50 |       6 |
|          2 | monetary     |            100 |       5 |
|          3 | monetary     |             25 |       5 |
|          4 | monetary     |             75 |       7 |
|          5 | monetary     |            250 |       8 |
|          6 | inkind       |             13 |       1 |
|          7 | inkind       |             19 |      15 |
|          8 | inkind       |              0 |       1 |
|          9 | inkind       |              0 |      23 |
|         10 | inkind       |              0 |       1 |
|         11 | inkind       |           4000 |       3 |
+------------+--------------+----------------+---------+
11 rows in set (0.00 sec)

mysql> select DonorID,sum(DonationAmount) as Total from donation where DonationType='monetary' group by DonorID order by Total Desc;
+---------+-------+
| DonorID | Total |
+---------+-------+
|       8 |   250 |
|       5 |   125 |
|       7 |    75 |
|       6 |    50 |
+---------+-------+
4 rows in set (0.00 sec)

mysql> 
然后,您可以更进一步,将您的捐赠表与您的捐赠者表联接,以在同一查询中获得捐赠者名称

mysql> select * from donors;
+---------+-------+
| DonorID | Name  |
+---------+-------+
|       6 | bob   |
|       5 | jack  |
|       7 | tim   |
|       8 | jane  |
|       1 | sara  |
|      15 | randy |
|       3 | hamed |
|      23 | jesse |
+---------+-------+
8 rows in set (0.00 sec)


mysql> select donation.DonorID,name,sum(DonationAmount) as Total from donation join donors on donation.DonorID=donors.DonorID where DonationType='monetary' group by DonorID order by Total Desc;
+---------+------+-------+
| DonorID | name | Total |
+---------+------+-------+
|       8 | jane |   250 |
|       5 | jack |   125 |
|       7 | tim  |    75 |
|       6 | bob  |    50 |
+---------+------+-------+
4 rows in set (0.00 sec)

代码示例只需要缩进四个空格。您可以突出显示希望以这种方式格式化的文本,然后使用Ctrl-K,它将为您缩进。或者单击{}
格式栏上的符号。同样,在请求SQL帮助时,比包含PHP代码更有用的是包含表定义。例如,您可以在MySQL客户端中使用
SHOW CREATE table provider
,并将其复制粘贴到您编辑的问题中。好的,因此我认为我无法使用它显示表命令,因为我不控制服务器,它看起来好像您必须更改服务器值以显示正确的列数,默认情况下,它将只显示1,这就是我遇到的。我将只写出mysql,就像我第一次创建表一样,并使用{}来显示它。希望没问题。对不起,DonorID在捐赠表中,我只是忘了放它,因为我很笨。^^。我将尝试用比尔建议的所有表结构更新我的帖子。我还添加了我已经有的php文件。对所有的错误表示抱歉。在这个网站上发布非常新,我从这里得到了很多答案,但我不是通常不是问问题的人。我很确定我可以将你的陈述融入到我目前拥有的东西中,而且应该会起作用。fam的东西终于完成了。现在我有机会测试了。谢谢大家的帮助。
mysql> select * from donors;
+---------+-------+
| DonorID | Name  |
+---------+-------+
|       6 | bob   |
|       5 | jack  |
|       7 | tim   |
|       8 | jane  |
|       1 | sara  |
|      15 | randy |
|       3 | hamed |
|      23 | jesse |
+---------+-------+
8 rows in set (0.00 sec)


mysql> select donation.DonorID,name,sum(DonationAmount) as Total from donation join donors on donation.DonorID=donors.DonorID where DonationType='monetary' group by DonorID order by Total Desc;
+---------+------+-------+
| DonorID | name | Total |
+---------+------+-------+
|       8 | jane |   250 |
|       5 | jack |   125 |
|       7 | tim  |    75 |
|       6 | bob  |    50 |
+---------+------+-------+
4 rows in set (0.00 sec)