所以,我试图从 2 个表中提取名字、姓氏和捐赠者类型。基本上,一个人有一个主要的“供体类型”。这意味着如果它们是两种不同的捐赠者类型,那么在捐赠者表中,您将放置排名最高的捐赠者。在 DonorandType 表中放置所有剩余的。因此,如果他们是董事会成员、校友和家长,您会在捐赠者表中看到董事会成员,然后在另一张表中看到校友和家长。
我最终让所有的人都出现在捐助者和类型表中(我只放了 4 个人在那里测试每个人都有不同数量的类型)不断出现。但是,如果我选择 2011 年(上一财年),它们不会重复。但是,在 2012 年(本财年),他们做到了。如果您愿意,我可以展示我所有的代码,而不仅仅是关于 sql 语句和 while 循环的部分。但是,我不认为这是我的日期限制的问题。
我的 sql 语句中也有一些日期限制,但我认为这不会有所作为。它基本上只是检查财政年度,如果他们在那一年没有捐款,它不会显示他们。我已经尝试过使用和不使用 SQL 语句的那部分,它似乎没有任何区别。所以,我相信这部分可以忽略。
供体表:
- 捐助者 ID (PK)
- 名
- 姓
- 电子邮件
- 电话
- 捐助者类型 (FK)
捐助者类型表:
- DonorTypeID (PK) -- 这是捐赠者类型的 2 个字母缩写,例如:AL 代表 Alumni
- DonorType -- 这些是每个捐赠者的名字,总共 8 个
- 等级——基本等级1、2、3等重要
捐助者类型表:
- 捐助者 ID (FK)
- 捐助者类型(FK)
捐款表:
- 捐款编号 (PK)
- 捐款金额
- 限制
- 描述
- 接收日期
- 捐助者ID(FK)
好的,所以我想从捐赠者表中提取他们的名字和姓氏。然后从 DonorandType 表中提取他们所有的捐赠者类型。
// SQL query to interact with info from our database
$sql = mysql_query("
SELECT donor.FirstName, donor.LastName, donorandtype.DonorType
FROM donor, donortype, donorandtype, donations
WHERE donor.DonorID = donorandtype.DonorID
and donortype.DonorType = donorandtype.DonorType
and donations.Date_Received BETWEEN '" . $startdate . "' and '" . $enddate . "'
") or die (mysql_error());
// Establish the output variable
echo "<table border=\"1\" cellpadding=\"10\" >
<tr>
<th id='name'>Donor Name</th>
<th id'dontype'>Donor Type</th>
</tr>";
while($row = mysql_fetch_array($sql)){
$first_name = $row["FirstName"];
$last_name = $row["LastName"];
$donor_type = $row["DonorType"];
echo "
<tr>
<td> $first_name $last_name </td>
<td>$donor_type </td>
</tr>";
}
echo '</table>';
这部分实际上显示在一个表格中……这需要说吗?我认为从上面的代码中可以清楚地看到,但无论如何。
DONOR'S TYPES
Donor Name Donor Type
Henry Hunt Alumni
Henry Hunt Board member
Paul Gates Past Parent
Winifred Gardner Parent
....
</trim>