【发布时间】:2012-12-07 04:52:38
【问题描述】:
所以,我试图从 2 个表中提取名字、姓氏和捐赠者类型。基本上,一个人有一个主要的“供体类型”。这意味着如果它们是两种不同的捐赠者类型,那么在捐赠者表中,您将放置排名最高的捐赠者。在 DonorandType 表中放置所有剩余的。因此,如果他们是董事会成员、校友和家长,您会在捐赠者表中看到董事会成员,然后在另一张表中看到校友和家长。
我最终让所有的人都出现在捐助者和类型表中(我只放了 4 个人在那里进行测试,每个人都有不同数量的类型)不断出现。但是,如果我选择 2011 年(上一财年),它们不会重复。但是,在 2012 年(本财年),他们做到了。如果您愿意,我可以展示我所有的代码,而不仅仅是关于 sql 语句和 while 循环的部分。但是,我不认为这是我的日期限制的问题。
我的 sql 语句中也有一些日期限制,但我认为这不会产生影响。它基本上只是检查财政年度,如果他们在那一年没有捐款,它不会显示他们。我已经尝试过使用和不使用 SQL 语句的那部分,它似乎没有任何区别。所以,我认为这部分可以忽略。
供体表:
- 捐赠者 ID (PK)
- 名字
- 姓氏
- 电子邮件
- 电话
- DonorType (FK)
DonorType 表:
- DonorTypeID (PK) -- 这是捐赠者类型的 2 个字母缩写,例如:AL 代表校友
- DonorType -- 这些是每个捐赠者的名字,总共 8 个
- 排名 -- 基本排名 1、2、3 等重要
DonorandType 表:
- 捐赠者 ID (FK)
- DonorType(FK)
捐款表:
- 捐赠 ID (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>
【问题讨论】:
-
@cHao mysql_query 和其他任何东西一样好用。另外,讨厌人们嘲笑 w3schools。这是初学者学习的好方法。
-
您还没有向我们提供
donations表的详细信息。 -
w3schools 非常棒,几乎和 SO 一样棒,但无论如何。我将使用输出编辑我的帖子。我假设只使用 {} 显示它是可以的,因为它很长,我不希望人们不得不滚动浏览一英里的文本。
-
您需要捐款表吗?查询不涉及它。它之所以存在,是因为我创建了一个 java 框,用于选择特定的财政年度,然后它仅根据捐助者在该财政年度捐款的情况显示结果。例如,如果我在 2011 年捐款,那么我会出现在 2011 财年而不是 2012 年。如果我在 2012 年捐款,则相反,如果我同时捐款,那么我会同时出现。不过,我会将它添加到我的帖子中。在这个查询中,我真的不需要任何关于捐赠的信息,除了日期并且不显示它。
-
乔尔:
...and donations.Date_Received BETWEEN...是的,查询使用它。
标签: php mysql loops while-loop